autopkgtest: Handle 'blacklisted' version

The apt version comparison sorts 'blacklisted' greater than most version
numbers, which means that we accidentally apply force hints for version
'blacklisted' to all uploads. Since this is the only case of a hacked
version number, let's special case it so that 'blacklisted' hints only
match packages with 'blacklisted' version.
sru-regression-messages
Iain Lane 6 years ago
parent bbabac140d
commit c12d92efa4
No known key found for this signature in database
GPG Key ID: E352D5C51C5041D4

@ -744,7 +744,9 @@ class AutopkgtestPolicy(BasePolicy):
self.log('Checking hints for %s/%s/%s: %s' % (src, ver, arch, [str(h) for h in hints])) self.log('Checking hints for %s/%s/%s: %s' % (src, ver, arch, [str(h) for h in hints]))
for hint in hints: for hint in hints:
if [mi for mi in hint.packages if mi.architecture in ['source', arch] and 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 True
return False return False

@ -1063,8 +1063,8 @@ class T(TestBase):
'brown': ['i386']}}) 'brown': ['i386']}})
def test_blacklisted_force(self): def test_blacklisted_force(self):
'''blacklisted packages return exit code 99 and version all, check they '''blacklisted packages return exit code 99 and version blacklisted,
are handled correctly''' check they can be forced over'''
self.swift.set_results({'autopkgtest-series': { self.swift.set_results({'autopkgtest-series': {
'series/amd64/b/black/20150101_100000@': (0, 'black 1', tr('black/1')), 'series/amd64/b/black/20150101_100000@': (0, 'black 1', tr('black/1')),
@ -1084,6 +1084,26 @@ class T(TestBase):
self.assertEqual(len(self.amqp_requests), 0) 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.swift.set_results({'autopkgtest-series': {
'series/amd64/b/black/20150101_100000@': (0, 'black 1', tr('black/1')),
'series/i386/b/black/20150101_100001@': (0, 'black 1', tr('black/1')),
'series/amd64/b/black/20150102_100000@': (4, 'black 2', tr('black/2')),
'series/i386/b/black/20150102_100001@': (4, 'black 2', tr('black/2'))
}})
self.create_hint('pitti', 'force-badtest black/amd64/blacklisted')
self.do_test(
[('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): def test_binary_from_new_source_package_pass(self):
'''building an existing binary for a new source package (pass)''' '''building an existing binary for a new source package (pass)'''

Loading…
Cancel
Save