Throw TypeError in repository enable/disable macros
Currently we do not validate the type of the reponames argument to the enable_extra_repos and disable_extra_repos macros. It should be a list, but we merged a call where the argument was a string, which interpreted as a list of single characters ('e', 'p', 'e', 'l'), and silently ignored. This change validates that the reponames argument is a list to avoid this issue. Change-Id: I497c8b2c1dc548e678698474d3604664cf8eeb07
This commit is contained in:
parent
1fe8012ce2
commit
5e7979f31d
|
@ -88,6 +88,9 @@ def handle_repos(context, reponames, mode):
|
||||||
else:
|
else:
|
||||||
raise KeyError
|
raise KeyError
|
||||||
|
|
||||||
|
if not isinstance(reponames, list):
|
||||||
|
raise TypeError("First argument should be a list of repositories")
|
||||||
|
|
||||||
repofile = os.path.dirname(os.path.realpath(__file__)) + '/repos.yaml'
|
repofile = os.path.dirname(os.path.realpath(__file__)) + '/repos.yaml'
|
||||||
with open(repofile, 'r') as repos_file:
|
with open(repofile, 'r') as repos_file:
|
||||||
repo_data = {}
|
repo_data = {}
|
||||||
|
|
|
@ -150,3 +150,16 @@ class MethodsTest(base.TestCase):
|
||||||
result = methods.handle_repos(template_vars, ['grafana'], 'disable')
|
result = methods.handle_repos(template_vars, ['grafana'], 'disable')
|
||||||
expectCmd = ''
|
expectCmd = ''
|
||||||
self.assertEqual(expectCmd, result)
|
self.assertEqual(expectCmd, result)
|
||||||
|
|
||||||
|
def test_handle_repos_string(self):
|
||||||
|
template_vars = {
|
||||||
|
'base_arch': 'x86_64',
|
||||||
|
'base_distro': 'debian',
|
||||||
|
'base_package_type': 'deb'
|
||||||
|
}
|
||||||
|
|
||||||
|
self.assertRaisesRegex(TypeError,
|
||||||
|
r'First argument should be a list of '
|
||||||
|
r'repositories',
|
||||||
|
methods.handle_repos, template_vars, 'grafana',
|
||||||
|
'disable')
|
||||||
|
|
Loading…
Reference in New Issue