Ensure keep is an iterable

If no value is provided for 'keep' when calling delete_old_managed,
ensure a default empty iterable is used to prevent an exception.

Change-Id: I3110f8e03e287a6ff067b992ed8631e34121a8d2
This commit is contained in:
Darragh Bailey 2016-11-14 13:40:03 +00:00
parent 949a3a61e1
commit bfb18520e6
2 changed files with 17 additions and 0 deletions

View File

@ -150,6 +150,8 @@ class JenkinsManager(object):
def delete_old_managed(self, keep=None):
jobs = self.get_jobs()
deleted_jobs = 0
if keep is None:
keep = []
for job in jobs:
if job['name'] not in keep:
if self.is_managed(job['name']):

View File

@ -39,3 +39,18 @@ class TestCaseTestJenkinsManager(base.BaseTestCase):
self.jjb_config.builder['plugins_info'] = None
self.builder = jenkins_jobs.builder.JenkinsManager(self.jjb_config)
self.assertEqual(self.builder.plugins_list, ['p1', 'p2'])
def test_delete_managed(self):
self.jjb_config.builder['plugins_info'] = []
self.builder = jenkins_jobs.builder.JenkinsManager(self.jjb_config)
with mock.patch.multiple('jenkins_jobs.builder.JenkinsManager',
get_jobs=mock.DEFAULT,
is_managed=mock.DEFAULT,
delete_job=mock.DEFAULT) as patches:
patches['get_jobs'].return_value = [{'name': 'job1'},
{'name': 'job2'}]
patches['is_managed'].side_effect = [True, True]
self.builder.delete_old_managed()
self.assertEquals(patches['delete_job'].call_count, 2)