can only promote COMPLETE draft build
This commit is contained in:
parent
6fe42b6212
commit
44d59ecbc7
2 changed files with 43 additions and 0 deletions
|
|
@ -15981,6 +15981,13 @@ def _promote_build(build, user=None, strict=True, force=False):
|
|||
raise koji.GenericError(f'Not a draft build: {binfo}')
|
||||
else:
|
||||
return None
|
||||
state = koji.BUILD_STATES[binfo['state']]
|
||||
if state != 'COMPLETE':
|
||||
if strict:
|
||||
raise koji.GenericError(f"Cannot promote build - {binfo['nvr']}."
|
||||
f' Reason: state ({state}) is not COMPLETE.')
|
||||
else:
|
||||
return None
|
||||
old_release = binfo['release']
|
||||
extra = binfo.get('extra') or {}
|
||||
# get target release in binfo.extra
|
||||
|
|
|
|||
|
|
@ -45,11 +45,13 @@ class TestPromoteBuild(unittest.TestCase):
|
|||
'name': 'foo',
|
||||
'version': 'bar',
|
||||
'release': 'dftrel_1',
|
||||
'nvr': 'testnvr',
|
||||
'extra': {
|
||||
'draft': {
|
||||
'promoted': False,
|
||||
'target_release': 'tgtrel_1'
|
||||
}},
|
||||
'state': 1,
|
||||
'draft': True,
|
||||
'volume_id': 99,
|
||||
'volume_name': 'X',
|
||||
|
|
@ -123,6 +125,7 @@ class TestPromoteBuild(unittest.TestCase):
|
|||
'promoted': False
|
||||
# no target_release
|
||||
}},
|
||||
'state': 1,
|
||||
'draft': True,
|
||||
'volume_id': 99,
|
||||
'volume_name': 'X',
|
||||
|
|
@ -140,6 +143,39 @@ class TestPromoteBuild(unittest.TestCase):
|
|||
self.assertIsNone(ret)
|
||||
self.assertEqual(len(self.updates), 0)
|
||||
|
||||
def test_promote_build_not_completed(self):
|
||||
draft = {
|
||||
'id': 1,
|
||||
'name': 'foo',
|
||||
'version': 'bar',
|
||||
'release': 'dftrel_1',
|
||||
'nvr': 'testnvr',
|
||||
'extra': {
|
||||
'draft': {
|
||||
'promoted': False
|
||||
# no target_release
|
||||
}},
|
||||
'draft': True,
|
||||
'state': 0,
|
||||
'volume_id': 99,
|
||||
'volume_name': 'X',
|
||||
'task_id': 222
|
||||
}
|
||||
|
||||
self.get_build.return_value = draft
|
||||
|
||||
with self.assertRaises(koji.GenericError) as cm:
|
||||
self.exports.promoteBuild('a-regular-build', strict=True)
|
||||
self.assertEqual(
|
||||
str(cm.exception),
|
||||
f"Cannot promote build - {draft['nvr']}. Reason: state (BUILDING) is not COMPLETE."
|
||||
)
|
||||
self.assertEqual(len(self.updates), 0)
|
||||
|
||||
ret = self.exports.promoteBuild('a-regular-build', strict=False)
|
||||
self.assertIsNone(ret)
|
||||
self.assertEqual(len(self.updates), 0)
|
||||
|
||||
def test_promote_build_target_build_exists(self):
|
||||
old = {
|
||||
'id': 'any'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue