parse target_release from draft release instead of extra.draft.target_release
This commit is contained in:
parent
d3ac45ca60
commit
f29e5e143e
6 changed files with 161 additions and 98 deletions
|
|
@ -78,7 +78,6 @@ class TestImportRPM(unittest.TestCase):
|
|||
kojihub.import_rpm(self.filename)
|
||||
self.assertEqual("Build is FAILED: name-version-release", str(cm.exception))
|
||||
self.assertEqual(len(self.inserts), 0)
|
||||
|
||||
|
||||
def test_import_rpm_completed_build(self):
|
||||
self.os_path_basename.return_value = 'name-version-release.arch.rpm'
|
||||
|
|
@ -212,14 +211,13 @@ class TestImportRPM(unittest.TestCase):
|
|||
self.assertEqual(insert.data, data)
|
||||
self.assertEqual(insert.rawdata, {})
|
||||
|
||||
|
||||
def test_import_draft_conflict(self):
|
||||
with self.assertRaises(koji.GenericError) as cm:
|
||||
kojihub.import_rpm(self.filename, buildinfo={'id': 1024, 'draft': False}, draft=True)
|
||||
self.assertEqual("draft property: False of build: 1024 mismatch, True is expected",
|
||||
str(cm.exception))
|
||||
self.assertEqual(len(self.inserts), 0)
|
||||
|
||||
|
||||
def test_import_draft_rpm_without_buildinfo(self):
|
||||
self.os_path_basename.return_value = 'name-version-release.arch.rpm'
|
||||
self.get_rpm_header.return_value = self.rpm_header_retval
|
||||
|
|
@ -229,8 +227,8 @@ class TestImportRPM(unittest.TestCase):
|
|||
self.assertEqual(f"Cannot import draft rpm: {self.os_path_basename.return_value}"
|
||||
" without specifying a build", str(cm.exception))
|
||||
self.assertEqual(len(self.inserts), 0)
|
||||
|
||||
def test_import_draft_rpm_non_extra_target_release(self):
|
||||
|
||||
def test_import_draft_rpm_invalid_release(self):
|
||||
self.os_path_basename.return_value = 'name-version-release.arch.rpm'
|
||||
self.get_rpm_header.return_value = self.rpm_header_retval
|
||||
|
||||
|
|
@ -238,7 +236,7 @@ class TestImportRPM(unittest.TestCase):
|
|||
'state': koji.BUILD_STATES['DELETED'],
|
||||
'name': 'name',
|
||||
'version': 'version',
|
||||
'release': 'release',
|
||||
'release': 'badrelease',
|
||||
'id': 12345,
|
||||
'draft': True
|
||||
}
|
||||
|
|
@ -246,11 +244,11 @@ class TestImportRPM(unittest.TestCase):
|
|||
with self.assertRaises(koji.GenericError) as cm:
|
||||
kojihub.import_rpm(self.filename, buildinfo=buildinfo, draft=True)
|
||||
self.assertEqual(
|
||||
f'target release of draft build not found in extra of build: {buildinfo}',
|
||||
'draft release: badrelease is not in valid format',
|
||||
str(cm.exception)
|
||||
)
|
||||
self.assertEqual(len(self.inserts), 0)
|
||||
|
||||
|
||||
def test_import_draft_rpm_valid(self):
|
||||
self.os_path_basename.return_value = 'name-version-release.arch.rpm'
|
||||
self.get_rpm_header.return_value = self.rpm_header_retval
|
||||
|
|
@ -259,7 +257,7 @@ class TestImportRPM(unittest.TestCase):
|
|||
'state': koji.BUILD_STATES['COMPLETE'],
|
||||
'name': 'name',
|
||||
'version': 'version',
|
||||
'release': 'release',
|
||||
'release': 'release#draft_12345',
|
||||
'id': 12345,
|
||||
'draft': True,
|
||||
'extra': {
|
||||
|
|
@ -305,14 +303,9 @@ class TestImportRPM(unittest.TestCase):
|
|||
'state': koji.BUILD_STATES['COMPLETE'],
|
||||
'name': 'name',
|
||||
'version': 'version',
|
||||
'release': 'release',
|
||||
'release': 'release#draft_12345',
|
||||
'id': 12345,
|
||||
'draft': True,
|
||||
'extra': {
|
||||
'draft': {
|
||||
'target_release': 'release'
|
||||
}
|
||||
}
|
||||
'draft': True
|
||||
}
|
||||
self.nextval.return_value = 9876
|
||||
kojihub.import_rpm(self.src_filename, buildinfo=buildinfo, draft=True)
|
||||
|
|
@ -384,4 +377,4 @@ class TestImportRPM(unittest.TestCase):
|
|||
self.assertEqual(insert.data, data)
|
||||
self.assertEqual(insert.rawdata, {})
|
||||
self.get_build.assert_called_once_with(5566, strict=True)
|
||||
self.assertEqual(self.get_build.call_count, 1)
|
||||
self.assertEqual(self.get_build.call_count, 1)
|
||||
|
|
|
|||
|
|
@ -36,7 +36,9 @@ class TestPromoteBuild(unittest.TestCase):
|
|||
self.list_tags = mock.patch('kojihub.kojihub.list_tags',
|
||||
return_value=[{'id': 101}]).start()
|
||||
self.set_tag_update = mock.patch('kojihub.kojihub.set_tag_update').start()
|
||||
self.encode_datetime = mock.patch('kojihub.kojihub.encode_datetime', return_value='NOW').start()
|
||||
self.encode_datetime = mock.patch(
|
||||
'kojihub.kojihub.encode_datetime', return_value='NOW'
|
||||
).start()
|
||||
self._now = datetime.datetime.now()
|
||||
self._datetime = mock.patch('kojihub.kojihub.datetime.datetime').start()
|
||||
self.now = self._datetime.now = mock.MagicMock(return_value=self._now)
|
||||
|
|
@ -45,12 +47,12 @@ class TestPromoteBuild(unittest.TestCase):
|
|||
'id': 1,
|
||||
'name': 'foo',
|
||||
'version': 'bar',
|
||||
'release': 'dftrel_1',
|
||||
'release': 'tgtrel#draft_1',
|
||||
'nvr': 'testnvr',
|
||||
'extra': {
|
||||
'draft': {
|
||||
'promoted': False,
|
||||
'target_release': 'tgtrel_1'
|
||||
'target_release': 'tgtrel'
|
||||
}},
|
||||
'state': 1,
|
||||
'draft': True,
|
||||
|
|
@ -58,13 +60,13 @@ class TestPromoteBuild(unittest.TestCase):
|
|||
'volume_name': 'X',
|
||||
'task_id': 222
|
||||
}
|
||||
|
||||
self.new_build = {
|
||||
|
||||
self.new_build = {
|
||||
# no check on the info
|
||||
'id': 1,
|
||||
'name': 'foo',
|
||||
'version': 'bar',
|
||||
'release': 'tgtrel_1',
|
||||
'release': 'tgtrel',
|
||||
'volume_name': 'X'
|
||||
}
|
||||
|
||||
|
|
@ -82,15 +84,15 @@ class TestPromoteBuild(unittest.TestCase):
|
|||
{
|
||||
'draft': {
|
||||
'promoted': True,
|
||||
'target_release': 'tgtrel_1',
|
||||
'old_release': 'dftrel_1',
|
||||
'target_release': 'tgtrel',
|
||||
'old_release': 'tgtrel#draft_1',
|
||||
'promotion_time': 'NOW',
|
||||
'promotion_ts': self._now.timestamp(),
|
||||
'promoter': self.user['name']
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
ret = self.exports.promoteBuild('a-draft-build', strict=True)
|
||||
self.assertEqual(ret, self.new_build)
|
||||
self.assertEqual(len(self.updates), 1)
|
||||
|
|
@ -98,7 +100,7 @@ class TestPromoteBuild(unittest.TestCase):
|
|||
self.assertEqual(update.table, 'build')
|
||||
self.assertEqual(update.values, self.draft_build)
|
||||
self.assertEqual(update.data, {'draft': False,
|
||||
'release': 'tgtrel_1',
|
||||
'release': 'tgtrel',
|
||||
'extra': extra})
|
||||
self.assertEqual(update.rawdata, {})
|
||||
self.assertEqual(update.clauses, ['id=%(id)i'])
|
||||
|
|
@ -113,21 +115,22 @@ class TestPromoteBuild(unittest.TestCase):
|
|||
self.exports.promoteBuild('a-regular-build', strict=True)
|
||||
self.assertEqual(str(cm.exception), "Not a draft build: {'draft': False}")
|
||||
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_no_target_release(self):
|
||||
def test_promote_build__target_release(self):
|
||||
draft = {
|
||||
'id': 1,
|
||||
'name': 'foo',
|
||||
'version': 'bar',
|
||||
'release': 'dftrel_1',
|
||||
'release': 'tgtrel#draft_2',
|
||||
'extra': {
|
||||
'draft': {
|
||||
'promoted': False
|
||||
# no target_release
|
||||
'promoted': False,
|
||||
# target_release doesn't matter now
|
||||
'target_release': 'any'
|
||||
}},
|
||||
'state': 1,
|
||||
'draft': True,
|
||||
|
|
@ -135,14 +138,17 @@ class TestPromoteBuild(unittest.TestCase):
|
|||
'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"draft.target_release not found in extra of build: {draft}")
|
||||
self.assertEqual(
|
||||
str(cm.exception),
|
||||
"buildinfo.id: 1 doesn't match build id part: 2 in buildinfo.release: tgtrel#draft_2"
|
||||
)
|
||||
self.assertEqual(len(self.updates), 0)
|
||||
|
||||
|
||||
ret = self.exports.promoteBuild('a-regular-build', strict=False)
|
||||
self.assertIsNone(ret)
|
||||
self.assertEqual(len(self.updates), 0)
|
||||
|
|
@ -152,12 +158,12 @@ class TestPromoteBuild(unittest.TestCase):
|
|||
'id': 1,
|
||||
'name': 'foo',
|
||||
'version': 'bar',
|
||||
'release': 'dftrel_1',
|
||||
'release': 'tgtrel#draft_1',
|
||||
'nvr': 'testnvr',
|
||||
'extra': {
|
||||
'draft': {
|
||||
'promoted': False
|
||||
# no target_release
|
||||
'promoted': False,
|
||||
'target_release': 'any'
|
||||
}},
|
||||
'draft': True,
|
||||
'state': 0,
|
||||
|
|
@ -193,9 +199,9 @@ class TestPromoteBuild(unittest.TestCase):
|
|||
self.get_build.assert_called_with({
|
||||
'name': 'foo',
|
||||
'version': 'bar',
|
||||
'release': 'tgtrel_1'
|
||||
'release': 'tgtrel'
|
||||
})
|
||||
|
||||
|
||||
self.get_build.reset_mock()
|
||||
self.get_build.side_effect = [self.draft_build, old]
|
||||
ret = self.exports.promoteBuild('a-regular-build', strict=False)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue