diff --git a/module_build_service/builder/KojiModuleBuilder.py b/module_build_service/builder/KojiModuleBuilder.py index 002e8505..4cb2b669 100644 --- a/module_build_service/builder/KojiModuleBuilder.py +++ b/module_build_service/builder/KojiModuleBuilder.py @@ -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 diff --git a/tests/test_builder/test_koji.py b/tests/test_builder/test_koji.py index b99843e3..e107faed 100644 --- a/tests/test_builder/test_koji.py +++ b/tests/test_builder/test_koji.py @@ -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')