autopkgtest: If there are unsatisfied deps on non-adt arches, still request the test

We still want to be blocked by other parts of britney, but we can run
the tests to see their results now.
pre-rebase-2020-07-10
Iain Lane 5 years ago
parent eee029b353
commit 865ac5d5f1
No known key found for this signature in database
GPG Key ID: E352D5C51C5041D4

@ -176,7 +176,8 @@ class AutopkgtestPolicy(BasePolicy):
# skip/delay autopkgtests until package is built
binaries_info = self.britney.sources[suite][source_name]
unsat_deps = excuse.unsat_deps.copy()
for arch in self.options.break_arches:
non_adt_arches = set(self.options.architectures) - set(self.adt_arches)
for arch in set(self.options.break_arches) | non_adt_arches:
try:
del unsat_deps[arch]
except KeyError:

@ -260,6 +260,58 @@ class T(TestBase):
self.assertIn('accepted: pink', upgrade_out)
self.assertIn('SUCCESS (1/0)', upgrade_out)
def test_tests_requested_when_non_adt_arch_is_blocking(self):
''' When a package is uninstallable on an arch that isn't an ADT_ARCH,
we should still request tests (but the package should remain a
non-candidate unless it is in BREAK_ARCHES - see above test). '''
self.sourceppa_cache['pink'] = {'1': ''}
self.swift.set_results({'autopkgtest-series': {
'series/amd64/p/pink/20150101_100000@': (0, 'pink 0.1', tr('pink/0.1')),
'series/ppc64el/p/pink/20150101_100000@': (0, 'pink 0.1', tr('pink/0.1'))
}})
self.data.add_src('pink', True, {'Version': '1', 'Testsuite': 'autopkgtest'})
# amd64 is installable
self.data.add('pink',
True,
{'Version': '1',
'Depends': 'libc6 (>= 0.9)',
'Architecture': 'amd64'},
testsuite='autopkgtest',
add_src=False)
# ppc64el is not installable
self.data.add('pink',
True,
{'Version': '1',
'Depends': 'libc6 (>= 0.9), libgreen1 (>= 2)',
'Architecture': 'ppc64el'},
testsuite='autopkgtest',
add_src=False)
exc = self.do_test(
[],
{'pink': (False, {})}
)[1]
# we noticed the unsat dep
self.assertEqual(exc['pink']['dependencies']['unsatisfiable-dependencies'],
{'ppc64el': ['libgreen1 (>= 2)']})
# but still requested the tests
self.assertEqual(self.pending_requests, {'pink/1': {'pink': ['amd64']}})
self.assertEqual(self.amqp_requests, set(['debci-series-amd64:pink {"triggers": ["pink/1"]}']))
self.assertEqual(exc['pink']['policy_info']['autopkgtest'],
{'pink': {'amd64': ['RUNNING',
'http://autopkgtest.ubuntu.com/running',
'http://autopkgtest.ubuntu.com/packages/p/pink/series/amd64',
None,
None]}})
with open(os.path.join(self.data.path, 'output', 'series', 'output.txt')) as f:
upgrade_out = f.read()
self.assertNotIn('accepted: pink', upgrade_out)
self.assertIn('SUCCESS (0/0)', upgrade_out)
def test_no_request_for_excluded_arch(self):
'''
Does not request a test on an architecture for which the package

Loading…
Cancel
Save