From 41d51369f54d695153fcd71043b511883392a5bf Mon Sep 17 00:00:00 2001 From: Iain Lane Date: Wed, 11 Jan 2017 10:43:30 +0000 Subject: [PATCH] autopkgtest: Accept packages which have dropped their tests in unstable Currently we re-trigger all reverse binary dependencies of a package, including binary packages built from the same source. We already explicity trigger the source's own tests if they still exist in unstable - don't also consider the source when looking at reverse dependencies. --- britney2/policies/autopkgtest.py | 5 +++++ tests/test_autopkgtest.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/britney2/policies/autopkgtest.py b/britney2/policies/autopkgtest.py index f06445d..28c3b12 100644 --- a/britney2/policies/autopkgtest.py +++ b/britney2/policies/autopkgtest.py @@ -352,6 +352,11 @@ class AutopkgtestPolicy(BasePolicy): for rdep in rdeps: try: rdep_src = binaries_info[rdep.package_name].source + # Don't re-trigger the package itself here; this should + # have been done above if the package still continues to + # have an autopkgtest in unstable. + if rdep_src == src: + continue except KeyError: self.log('%s on %s has no source (NBS?)' % (rdep.package_name, arch)) continue diff --git a/tests/test_autopkgtest.py b/tests/test_autopkgtest.py index c982775..ecbeb2c 100755 --- a/tests/test_autopkgtest.py +++ b/tests/test_autopkgtest.py @@ -244,6 +244,37 @@ class T(TestBase): self.assertIn('accepted: darkgreen', upgrade_out) self.assertIn('SUCCESS (1/0)', upgrade_out) + def test_dropped_test_not_run(self): + '''New version of a package drops its autopkgtest''' + + # green has passed on amd64 before + # lightgreen has passed on i386, therefore we should block on it returning + self.swift.set_results({'autopkgtest-series': { + 'series/amd64/g/green/20150101_100000@': (0, 'green 4', tr('green/1')), + 'series/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('green/1')), + }}) + + self.do_test( + [('libgreen1', {'Version': '2', 'Source': 'green'}, None)], + {'green': (False, {'lightgreen': {'amd64': 'RUNNING-ALWAYSFAIL', 'i386': 'RUNNING'}}) + }, + {'green': [('old-version', '1'), ('new-version', '2'), + ('reason', 'autopkgtest')]}) + + # we expect the package's reverse dependencies' tests to get triggered, + # but *not* the package itself since it has no autopkgtest any more + self.assertEqual( + self.amqp_requests, + set(['debci-series-i386:lightgreen {"triggers": ["green/2"]}', + 'debci-series-amd64:lightgreen {"triggers": ["green/2"]}', + 'debci-series-i386:darkgreen {"triggers": ["green/2"]}', + 'debci-series-amd64:darkgreen {"triggers": ["green/2"]}'])) + + # ... and that they get recorded as pending + expected_pending = {'green/2': {'darkgreen': ['amd64', 'i386'], + 'lightgreen': ['amd64', 'i386']}} + self.assertEqual(self.pending_requests, expected_pending) + def test_multi_rdepends_with_tests_all_running(self): '''Multiple reverse dependencies with tests (all running)'''