Add tests for --cache-dir option
Update the API of the Cloner app to let a test pass command line options to it, then write some tests to verify the behavior of the --cache-dir option and ZUUL_CACHE_DIR environment variable. Change-Id: I5c8b37d34f5de728a51dd4cc4b4f6413542bc6c9
This commit is contained in:
parent
bd5e407072
commit
c0a088d581
0
tests/cmd/__init__.py
Normal file
0
tests/cmd/__init__.py
Normal file
56
tests/cmd/test_cloner.py
Normal file
56
tests/cmd/test_cloner.py
Normal file
@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
import testtools
|
||||
import zuul.cmd.cloner
|
||||
|
||||
logging.basicConfig(level=logging.DEBUG,
|
||||
format='%(asctime)s %(name)-32s '
|
||||
'%(levelname)-8s %(message)s')
|
||||
|
||||
|
||||
class TestClonerCmdArguments(testtools.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestClonerCmdArguments, self).setUp()
|
||||
self.app = zuul.cmd.cloner.Cloner()
|
||||
|
||||
def test_default_cache_dir_empty(self):
|
||||
self.app.parse_arguments(['base', 'repo'])
|
||||
self.assertEqual(None, self.app.args.cache_dir)
|
||||
|
||||
def test_default_cache_dir_environ(self):
|
||||
try:
|
||||
os.environ['ZUUL_CACHE_DIR'] = 'fromenviron'
|
||||
self.app.parse_arguments(['base', 'repo'])
|
||||
self.assertEqual('fromenviron', self.app.args.cache_dir)
|
||||
finally:
|
||||
del os.environ['ZUUL_CACHE_DIR']
|
||||
|
||||
def test_default_cache_dir_override_environ(self):
|
||||
try:
|
||||
os.environ['ZUUL_CACHE_DIR'] = 'fromenviron'
|
||||
self.app.parse_arguments(['--cache-dir', 'argument',
|
||||
'base', 'repo'])
|
||||
self.assertEqual('argument', self.app.args.cache_dir)
|
||||
finally:
|
||||
del os.environ['ZUUL_CACHE_DIR']
|
||||
|
||||
def test_default_cache_dir_argument(self):
|
||||
self.app.parse_arguments(['--cache-dir', 'argument',
|
||||
'base', 'repo'])
|
||||
self.assertEqual('argument', self.app.args.cache_dir)
|
@ -33,7 +33,7 @@ ZUUL_ENV_SUFFIXES = (
|
||||
class Cloner(zuul.cmd.ZuulApp):
|
||||
log = logging.getLogger("zuul.Cloner")
|
||||
|
||||
def parse_arguments(self):
|
||||
def parse_arguments(self, args=sys.argv[1:]):
|
||||
"""Parse command line arguments and returns argparse structure"""
|
||||
parser = argparse.ArgumentParser(
|
||||
description='Zuul Project Gating System Cloner.')
|
||||
@ -90,7 +90,7 @@ class Cloner(zuul.cmd.ZuulApp):
|
||||
default=os.environ.get(env_name)
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
args = parser.parse_args(args)
|
||||
# Validate ZUUL_* arguments. If ref is provided then URL is required.
|
||||
zuul_args = [zuul_opt for zuul_opt, val in vars(args).items()
|
||||
if zuul_opt.startswith('zuul') and val is not None]
|
||||
|
Loading…
x
Reference in New Issue
Block a user