PR#3550: Allow buildTagID and destTagID as string and dict in getBuildTargets
Merges #3550 https://pagure.io/koji/pull-request/3550 Fixes: #3549 https://pagure.io/koji/issue/3549 hub getBuildTargets fails when buildTagID and destTagID is not int
This commit is contained in:
commit
2f3e35257f
2 changed files with 35 additions and 6 deletions
|
|
@ -3241,8 +3241,13 @@ def _delete_build_target(buildTargetInfo):
|
|||
|
||||
def get_build_targets(info=None, event=None, buildTagID=None, destTagID=None, queryOpts=None):
|
||||
"""Return data on all the build targets
|
||||
:param int, str, dist info: build target name, ID or dict
|
||||
:param int event: provide event to query at a different time
|
||||
:param int, str, dict buildTagID: build tag name, ID or dict
|
||||
:param int, str, dict destTagID: destination tag name, ID or dict
|
||||
:param dict queryOpts: additional options for this query.
|
||||
"""
|
||||
|
||||
provide event to query at a different time"""
|
||||
fields = (
|
||||
('build_target.id', 'id'),
|
||||
('build_tag', 'build_tag'),
|
||||
|
|
@ -3262,9 +3267,13 @@ def get_build_targets(info=None, event=None, buildTagID=None, destTagID=None, qu
|
|||
clauses.append(clause)
|
||||
values.update(c_values)
|
||||
if buildTagID is not None:
|
||||
if isinstance(buildTagID, (str, dict)):
|
||||
buildTagID = get_tag_id(buildTagID)
|
||||
clauses.append('build_tag = %(buildTagID)i')
|
||||
values['buildTagID'] = buildTagID
|
||||
if destTagID is not None:
|
||||
if isinstance(destTagID, str) or isinstance(destTagID, dict):
|
||||
destTagID = get_tag_id(destTagID)
|
||||
clauses.append('dest_tag = %(destTagID)i')
|
||||
values['destTagID'] = destTagID
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ class TestGetBuildTargets(unittest.TestCase):
|
|||
def setUp(self):
|
||||
self.maxDiff = None
|
||||
self.name_or_id_clause = mock.patch('kojihub.name_or_id_clause').start()
|
||||
self.get_tag_id = mock.patch('kojihub.get_tag_id').start()
|
||||
self.exports = kojihub.RootExports()
|
||||
self.context = mock.patch('kojihub.context').start()
|
||||
self.cursor = mock.MagicMock()
|
||||
|
|
@ -19,8 +20,10 @@ class TestGetBuildTargets(unittest.TestCase):
|
|||
side_effect=self.getQuery).start()
|
||||
self.queries = []
|
||||
self.build_target = 'build-target'
|
||||
self.build_tag = 'tag'
|
||||
self.dest_tag = 'dest-tag'
|
||||
self.build_tag_name = 'tag'
|
||||
self.dest_tag_name = 'dest-tag'
|
||||
self.build_tag_id = 1
|
||||
self.dest_tag_id = 2
|
||||
|
||||
def tearDown(self):
|
||||
mock.patch.stopall()
|
||||
|
|
@ -32,11 +35,28 @@ class TestGetBuildTargets(unittest.TestCase):
|
|||
self.queries.append(query)
|
||||
return query
|
||||
|
||||
def test_get_build_targets(self):
|
||||
def test_get_build_targets_strings(self):
|
||||
self.name_or_id_clause.return_value = '(build_target.name = %(build_target_name)s)', \
|
||||
{'build_target_name': 'build-target-url'}
|
||||
kojihub.get_build_targets(self.build_target, buildTagID=self.build_tag,
|
||||
destTagID=self.dest_tag)
|
||||
self.get_tag_id.side_effect = [[self.build_tag_id], [self.dest_tag_id]]
|
||||
kojihub.get_build_targets(self.build_target, buildTagID=self.build_tag_name,
|
||||
destTagID=self.dest_tag_name)
|
||||
self.assertEqual(len(self.queries), 1)
|
||||
query = self.queries[0]
|
||||
self.assertEqual(query.tables, ['build_target_config'])
|
||||
self.assertEqual(query.joins,
|
||||
['build_target ON build_target_config.build_target_id = build_target.id',
|
||||
'tag AS tag1 ON build_target_config.build_tag = tag1.id',
|
||||
'tag AS tag2 ON build_target_config.dest_tag = tag2.id'])
|
||||
self.assertEqual(query.clauses,
|
||||
['(active = TRUE)', '(build_target.name = %(build_target_name)s)',
|
||||
'build_tag = %(buildTagID)i', 'dest_tag = %(destTagID)i'])
|
||||
|
||||
def test_get_build_targets_integers(self):
|
||||
self.name_or_id_clause.return_value = '(build_target.name = %(build_target_name)s)', \
|
||||
{'build_target_name': 'build-target-url'}
|
||||
kojihub.get_build_targets(self.build_target, buildTagID=self.build_tag_id,
|
||||
destTagID=self.dest_tag_id)
|
||||
self.assertEqual(len(self.queries), 1)
|
||||
query = self.queries[0]
|
||||
self.assertEqual(query.tables, ['build_target_config'])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue