PR#1797: hub: build for policy check should be build_id in host.tagBuild

Merges #1797
https://pagure.io/koji/pull-request/1797

Fixes: #1796
hub: host.tagBuild failed in 1.19
https://pagure.io/koji/issue/1796
This commit is contained in:
Tomas Kopecek 2019-11-19 14:14:01 +01:00
commit a365c9ad54
2 changed files with 71 additions and 5 deletions

View file

@ -9119,15 +9119,18 @@ class ImportedTest(koji.policy.BaseSimpleTest):
True if any of them lack a buildroot (strict)"""
name = 'imported'
def run(self, data):
rpms = context.handlers.call('listRPMs', buildID=data['build'])
#no test args
for rpminfo in rpms:
build_info = data.get('build')
if not build_info:
raise koji.GenericError('policy data must contain a build')
build_id = get_build(build_info, strict=True)['id']
# no test args
for rpminfo in list_rpms(buildID=build_id):
if rpminfo['buildroot_id'] is None:
return True
for archive in list_archives(buildID=data['build']):
for archive in list_archives(buildID=build_id):
if archive['buildroot_id'] is None:
return True
#otherwise...
# otherwise...
return False
class ChildTaskTest(koji.policy.BoolTest):

View file

@ -296,3 +296,66 @@ class TestBuildTypeTest(unittest.TestCase):
data = {'build': 123, 'btypes': set(['rpm'])}
self.assertTrue(obj.run(data))
self.get_build_type.assert_not_called()
class TestImportedTest(unittest.TestCase):
def setUp(self):
self.list_rpms = mock.patch('kojihub.list_rpms').start()
self.list_archives = mock.patch('kojihub.list_archives').start()
self.get_build = mock.patch('kojihub.get_build').start()
def tearDown(self):
mock.patch.stopall()
def test_no_build(self):
self.get_build.side_effect = koji.GenericError
obj = kojihub.ImportedTest('imported - no build')
data = {}
with self.assertRaises(koji.GenericError) as cm:
obj.run(data)
self.assertEqual(cm.exception.args[0],
'policy data must contain a build')
self.get_build.assert_not_called()
def test_invalid_build(self):
self.get_build.side_effect = koji.GenericError
obj = kojihub.ImportedTest('imported - invalid build')
data = {'build': 'nvr-1-1'}
with self.assertRaises(koji.GenericError):
obj.run(data)
self.get_build.assert_called_once_with('nvr-1-1', strict=True)
def test_imported_rpm(self):
binfo = {'id': 1, 'name': 'nvr-1-1'}
self.get_build.return_value = binfo
self.list_rpms.return_value = [{'id': 1, 'buildroot_id': None}]
obj = kojihub.ImportedTest('imported - imported rpm')
data = {'build': 'nvr-1-1'}
self.assertTrue(obj.run(data))
self.get_build.assert_called_once_with('nvr-1-1', strict=True)
self.list_rpms.assert_called_once_with(buildID=1)
self.list_archives.assert_not_called()
def test_imported_archive(self):
binfo = {'id': 1, 'name': 'nvr-1-1'}
self.get_build.return_value = binfo
self.list_rpms.return_value = [{'id': 1, 'buildroot_id': 1}]
self.list_archives.return_value = [{'id': 1, 'buildroot_id': None}]
obj = kojihub.ImportedTest('imported - imported archive')
data = {'build': 'nvr-1-1'}
self.assertTrue(obj.run(data))
self.get_build.assert_called_once_with('nvr-1-1', strict=True)
self.list_rpms.assert_called_once_with(buildID=1)
self.list_archives.assert_called_once_with(buildID=1)
def test_false(self):
binfo = {'id': 1, 'name': 'nvr-1-1'}
self.get_build.return_value = binfo
self.list_rpms.return_value = [{'id': 1, 'buildroot_id': 1}]
self.list_archives.return_value = [{'id': 1, 'buildroot_id': 2}]
obj = kojihub.ImportedTest('imported - false test')
data = {'build': 'nvr-1-1'}
self.assertFalse(obj.run(data))
self.get_build.assert_called_once_with('nvr-1-1', strict=True)
self.list_rpms.assert_called_once_with(buildID=1)
self.list_archives.assert_called_once_with(buildID=1)