From d081a4eda88d3494e19767ff05c048c03c401810 Mon Sep 17 00:00:00 2001 From: Qixiang Wan Date: Fri, 10 Mar 2017 09:51:24 -0600 Subject: [PATCH] pkgset: report all unsigned packages Fixes: #552 Merges: #567 Signed-off-by: Qixiang Wan --- pungi/phases/pkgset/pkgsets.py | 16 ++++++++++++++-- tests/test_pkgset_pkgsets.py | 4 ++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/pungi/phases/pkgset/pkgsets.py b/pungi/phases/pkgset/pkgsets.py index 4dce70d2..496d99f2 100644 --- a/pungi/phases/pkgset/pkgsets.py +++ b/pungi/phases/pkgset/pkgsets.py @@ -48,6 +48,8 @@ class ReaderThread(WorkerThread): % (num, self.pool.queue_total)) rpm_path = self.pool.package_set.get_package_path(item) + if rpm_path is None: + return rpm_obj = self.pool.package_set.file_cache.add(rpm_path) self.pool.package_set.rpms_by_arch.setdefault(rpm_obj.arch, []).append(rpm_obj) @@ -72,6 +74,8 @@ class PackageSetBase(kobo.log.LoggingBase): self.arches = arches self.rpms_by_arch = {} self.srpms_by_name = {} + # RPMs not found for specified sigkeys + self._invalid_sigkey_rpms = [] def __getitem__(self, name): return self.file_cache[name] @@ -119,6 +123,12 @@ class PackageSetBase(kobo.log.LoggingBase): rpm_pool.stop() self.log_debug("Package set: worker threads stopped (RPMs)") + if self._invalid_sigkey_rpms: + raise RuntimeError( + "RPM(s) not found for sigs: %s. Check log for details. Unsigned packages:\n%s" % ( + self.sigkey_ordering, + '\n'.join([rpminfo['name'] for rpminfo in self._invalid_sigkey_rpms]))) + return self.rpms_by_arch def merge(self, other, primary_arch, arch_list): @@ -247,8 +257,10 @@ class KojiPackageSet(PackageSetBase): if os.path.isfile(rpm_path): return rpm_path - raise RuntimeError("RPM %s not found for sigs: %s. Paths checked: %s" - % (rpm_info, self.sigkey_ordering, paths)) + self._invalid_sigkey_rpms.append(rpm_info) + self.log_error("RPM %s not found for sigs: %s. Paths checked: %s" + % (rpm_info, self.sigkey_ordering, paths)) + return None def populate(self, tag, event=None, inherit=True): result_rpms = [] diff --git a/tests/test_pkgset_pkgsets.py b/tests/test_pkgset_pkgsets.py index 8c88b267..297dc7e6 100644 --- a/tests/test_pkgset_pkgsets.py +++ b/tests/test_pkgset_pkgsets.py @@ -248,7 +248,7 @@ class TestKojiPkgset(PkgsetCompareMixin, helpers.PungiTestCase): [mock.call.listTaggedRPMS('f25', event=None, inherit=True, latest=True)]) self.assertRegexpMatches(str(ctx.exception), - r'^RPM .+ not found for sigs: .+ Paths checked: .+$') + r'^RPM\(s\) not found for sigs: .+Check log for details.+') def test_can_not_find_any_package(self): pkgset = pkgsets.KojiPackageSet(self.koji_wrapper, ['cafebabe', None], arches=['x86_64']) @@ -261,7 +261,7 @@ class TestKojiPkgset(PkgsetCompareMixin, helpers.PungiTestCase): [mock.call.listTaggedRPMS('f25', event=None, inherit=True, latest=True)]) self.assertRegexpMatches(str(ctx.exception), - r'^RPM .+ not found for sigs: .+ Paths checked: .+$') + r'^RPM\(s\) not found for sigs: .+Check log for details.+') @mock.patch('kobo.pkgset.FileCache', new=MockFileCache)