diff --git a/britney2/policies/autopkgtest.py b/britney2/policies/autopkgtest.py index bf296cb..448dcf8 100644 --- a/britney2/policies/autopkgtest.py +++ b/britney2/policies/autopkgtest.py @@ -1182,7 +1182,9 @@ class AutopkgtestPolicy(BasePolicy): self.logger.info('Checking hints for %s/%s/%s: %s', src, ver, arch, [str(h) for h in hints]) for hint in hints: if [mi for mi in hint.packages if mi.architecture in ['source', arch] and - (mi.version == 'all' or apt_pkg.version_compare(ver, mi.version) <= 0)]: + (mi.version == 'all' or + (mi.version == 'blacklisted' and ver == 'blacklisted') or + (mi.version != 'blacklisted' and apt_pkg.version_compare(ver, mi.version) <= 0))]: return True return False diff --git a/tests/test_autopkgtest.py b/tests/test_autopkgtest.py index 767773e..37a10d2 100644 --- a/tests/test_autopkgtest.py +++ b/tests/test_autopkgtest.py @@ -1182,8 +1182,8 @@ class AT(TestAutopkgtestBase): 'brown': ['i386']}}) def test_blacklisted_force(self): - '''blacklisted packages return exit code 99 and version all, check they - are handled correctly''' + '''blacklisted packages return exit code 99 and version blacklisted, + check they can be forced over''' self.data.add_default_packages(black=False) @@ -1205,6 +1205,28 @@ class AT(TestAutopkgtestBase): self.assertEqual(len(self.amqp_requests), 0) + def test_blacklisted_force_mismatch(self): + '''forcing a blacklisted package doesn't mean you force other versions''' + + self.data.add_default_packages(black=False) + + self.swift.set_results({'autopkgtest-testing': { + 'testing/amd64/b/black/20150101_100000@': (0, 'black 1', tr('black/1')), + 'testing/i386/b/black/20150101_100001@': (0, 'black 1', tr('black/1')), + 'testing/amd64/b/black/20150102_100000@': (4, 'black 2', tr('black/2')), + 'testing/i386/b/black/20150102_100001@': (4, 'black 2', tr('black/2')) + }}) + + self.create_hint('autopkgtest', 'force-badtest black/amd64/blacklisted') + + self.run_it( + [('black', {'Version': '2'}, 'autopkgtest')], + {'black': (False, {'black/2': {'amd64': 'REGRESSION'}}) + }, + {'black': [('old-version', '1'), ('new-version', '2')]}) + + self.assertEqual(len(self.amqp_requests), 0) + def test_binary_from_new_source_package_pass(self): '''building an existing binary for a new source package (pass)'''