mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-04-05 03:38:12 +08:00
Refactor get_build_by_artifact so that it always returns the same kind of dict.
This commit is contained in:
@@ -411,12 +411,17 @@ chmod 644 %buildroot/%_rpmconfigdir/macros.d/macros.modules
|
||||
untagged = self.koji_session.untaggedBuilds(**opts)
|
||||
for build in untagged:
|
||||
if build["release"].endswith(release):
|
||||
build_info = self.koji_session.getBuild(build['id'])
|
||||
if not build_info:
|
||||
log.error("Cannot get build info of build %r", build['id'])
|
||||
return None
|
||||
self.tag_artifacts([build_info["nvr"]])
|
||||
return build_info
|
||||
# Tag it.
|
||||
nvr = "{name}-{version}-{release}".format(**build)
|
||||
self.tag_artifacts([nvr])
|
||||
|
||||
# Now, make the same query we made earlier to return a dict
|
||||
# with the same schema.
|
||||
tagged = self.koji_session.listTagged(tag, **opts)
|
||||
if not tagged:
|
||||
# Should be impossible.
|
||||
raise ValueError("Just tagged %s but didn't find it" % nvr)
|
||||
return tagged[0]
|
||||
|
||||
return None
|
||||
|
||||
|
||||
@@ -104,21 +104,32 @@ class TestKojiBuilder(unittest.TestCase):
|
||||
builder.module_tag = {"name": "module-foo", "id": 1}
|
||||
builder.module_build_tag = {"name": "module-foo-build", "id": 2}
|
||||
|
||||
# Set listTagged to return test data
|
||||
tagged = []
|
||||
builder.koji_session.listTagged.return_value = tagged
|
||||
untagged = [{
|
||||
"nvr": "foo-1.0-1.module_e0095747",
|
||||
"release": "module_e0095747",
|
||||
"id": "whatever",
|
||||
}]
|
||||
builder.koji_session.untaggedBuilds.return_value = untagged
|
||||
builder.koji_session.getBuild.return_value = {
|
||||
tagged_build = {
|
||||
"id": 9000,
|
||||
"name": "foo",
|
||||
"version": "1.0",
|
||||
"release": "1.module_e0095747",
|
||||
"nvr": "foo-1.0-1.module_e0095747",
|
||||
}
|
||||
# Set listTagged to return test data
|
||||
builder.koji_session.listTagged.side_effect = [
|
||||
# Return nothing the first time
|
||||
[],
|
||||
# Return nothing the second time
|
||||
[],
|
||||
# But something the third time.
|
||||
[tagged_build],
|
||||
]
|
||||
untagged = [{
|
||||
"id": 9000,
|
||||
"name": "foo",
|
||||
"version": "1.0",
|
||||
"release": "1.module_e0095747",
|
||||
}]
|
||||
builder.koji_session.untaggedBuilds.return_value = untagged
|
||||
|
||||
actual = builder._get_build_by_artifact('foo')
|
||||
expected = {'nvr': 'foo-1.0-1.module_e0095747'}
|
||||
expected = tagged_build
|
||||
self.assertEquals(actual, expected)
|
||||
builder.koji_session.tagBuild.assert_called_once_with(
|
||||
1, 'foo-1.0-1.module_e0095747')
|
||||
|
||||
Reference in New Issue
Block a user