mirror of
https://git.launchpad.net/~ubuntu-release/britney/+git/britney2-ubuntu
synced 2025-03-11 03:11:08 +00:00
Merge remote-tracking branch 'robru/fix-sourceppa'
This commit is contained in:
commit
442993d3f0
@ -47,21 +47,28 @@ class SourcePPAPolicy(BasePolicy, Rest):
|
|||||||
if cached is not None:
|
if cached is not None:
|
||||||
return cached
|
return cached
|
||||||
|
|
||||||
data = self.query_lp_rest_api('%s/%s' % (self.options.distribution, self.options.series), {
|
data = self.query_lp_rest_api('%s/+archive/primary' % self.options.distribution, {
|
||||||
'ws.op': 'getPackageUploads',
|
'ws.op': 'getPublishedSources',
|
||||||
'archive': PRIMARY,
|
|
||||||
'pocket': 'Proposed',
|
'pocket': 'Proposed',
|
||||||
'name': pkg,
|
'source_name': pkg,
|
||||||
'version': version,
|
'version': version,
|
||||||
'exact_match': 'true',
|
'exact_match': 'true',
|
||||||
|
'distro_series': '/%s/%s' % (self.options.distribution, self.options.series),
|
||||||
})
|
})
|
||||||
try:
|
try:
|
||||||
return data['entries'][0]['copy_source_archive_link']
|
sourcepub = data['entries'][0]['self_link']
|
||||||
# IndexError means no packages in -proposed matched this name/version,
|
# IndexError means no packages in -proposed matched this name/version,
|
||||||
# which is expected to happen when bileto runs britney.
|
# which is expected to happen when bileto runs britney.
|
||||||
except IndexError:
|
except IndexError:
|
||||||
self.log('SourcePPA getPackageUploads IndexError (%s %s)' % (pkg, version))
|
self.log('SourcePPA getPackageUploads IndexError (%s %s)' % (pkg, version))
|
||||||
return 'IndexError'
|
return 'IndexError'
|
||||||
|
data = self.query_lp_rest_api(sourcepub, {'ws.op': 'getPublishedBinaries'})
|
||||||
|
for binary in data['entries']:
|
||||||
|
link = binary['build_link'] or ''
|
||||||
|
if '/+archive/' in link:
|
||||||
|
ppa, _, buildid = link.partition('/+build/')
|
||||||
|
return ppa
|
||||||
|
return ''
|
||||||
|
|
||||||
def initialise(self, britney):
|
def initialise(self, britney):
|
||||||
"""Load cached source ppa data"""
|
"""Load cached source ppa data"""
|
||||||
|
@ -70,18 +70,18 @@ class T(unittest.TestCase):
|
|||||||
"""Identify when package has no source PPA"""
|
"""Identify when package has no source PPA"""
|
||||||
context = urlopen.return_value.__enter__.return_value
|
context = urlopen.return_value.__enter__.return_value
|
||||||
context.getcode.return_value = 200
|
context.getcode.return_value = 200
|
||||||
context.read.return_value = b'{"entries": [{"copy_source_archive_link": null, "other_stuff": "ignored"}]}'
|
context.read.return_value = b'{"entries": [{"self_link": "https://api.launchpad.net/1.0/ubuntu/+archive/primary/+sourcepub/12345", "build_link": "https://api.launchpad.net/1.0/ubuntu/+source/gcc-5/5.4.1-7ubuntu1/+build/12066956", "other_stuff": "ignored"}]}'
|
||||||
pol = SourcePPAPolicy(FakeOptions, {})
|
pol = SourcePPAPolicy(FakeOptions, {})
|
||||||
self.assertEqual(pol.lp_get_source_ppa('hello', '1.0'), None)
|
self.assertEqual(pol.lp_get_source_ppa('hello', '1.0'), '')
|
||||||
|
|
||||||
@patch('britney2.policies.sourceppa.urllib.request.urlopen')
|
@patch('britney2.policies.sourceppa.urllib.request.urlopen')
|
||||||
def test_lp_rest_api_with_source_ppa(self, urlopen):
|
def test_lp_rest_api_with_source_ppa(self, urlopen):
|
||||||
"""Identify source PPA"""
|
"""Identify source PPA"""
|
||||||
context = urlopen.return_value.__enter__.return_value
|
context = urlopen.return_value.__enter__.return_value
|
||||||
context.getcode.return_value = 200
|
context.getcode.return_value = 200
|
||||||
context.read.return_value = b'{"entries": [{"copy_source_archive_link": "https://api.launchpad.net/1.0/team/ubuntu/ppa", "other_stuff": "ignored"}]}'
|
context.read.return_value = b'{"entries": [{"self_link": "https://api.launchpad.net/1.0/ubuntu/+archive/primary/+sourcepub/12345", "build_link": "https://api.launchpad.net/1.0/~ci-train-ppa-service/+archive/ubuntu/2516/+build/12063031", "other_stuff": "ignored"}]}'
|
||||||
pol = SourcePPAPolicy(FakeOptions, {})
|
pol = SourcePPAPolicy(FakeOptions, {})
|
||||||
self.assertEqual(pol.lp_get_source_ppa('hello', '1.0'), 'https://api.launchpad.net/1.0/team/ubuntu/ppa')
|
self.assertEqual(pol.lp_get_source_ppa('hello', '1.0'), 'https://api.launchpad.net/1.0/~ci-train-ppa-service/+archive/ubuntu/2516')
|
||||||
|
|
||||||
@patch('britney2.policies.sourceppa.urllib.request.urlopen')
|
@patch('britney2.policies.sourceppa.urllib.request.urlopen')
|
||||||
def test_lp_rest_api_errors(self, urlopen):
|
def test_lp_rest_api_errors(self, urlopen):
|
||||||
@ -141,12 +141,12 @@ class T(unittest.TestCase):
|
|||||||
|
|
||||||
context = urlopen.return_value.__enter__.return_value
|
context = urlopen.return_value.__enter__.return_value
|
||||||
context.getcode.return_value = 200
|
context.getcode.return_value = 200
|
||||||
context.read.return_value = b'{"entries": [{"copy_source_archive_link": "https://api.launchpad.net/1.0/team/ubuntu/ppa", "other_stuff": "ignored"}]}'
|
context.read.return_value = b'{"entries": [{"self_link": "https://api.launchpad.net/1.0/ubuntu/+archive/primary/+sourcepub/12345", "build_link": "https://api.launchpad.net/1.0/~ci-train-ppa-service/+archive/ubuntu/2516/+build/12063031", "other_stuff": "ignored"}]}'
|
||||||
urlopen.side_effect = l()
|
urlopen.side_effect = l()
|
||||||
pol = SourcePPAPolicy(FakeOptions, {})
|
pol = SourcePPAPolicy(FakeOptions, {})
|
||||||
pol.lp_get_source_ppa('hello', '1.0')
|
pol.lp_get_source_ppa('hello', '1.0')
|
||||||
self.assertEqual(urlopen.call_count, 4)
|
self.assertEqual(urlopen.call_count, 5)
|
||||||
self.assertEqual(pol.lp_get_source_ppa('hello', '1.0'), 'https://api.launchpad.net/1.0/team/ubuntu/ppa')
|
self.assertEqual(pol.lp_get_source_ppa('hello', '1.0'), 'https://api.launchpad.net/1.0/~ci-train-ppa-service/+archive/ubuntu/2516')
|
||||||
|
|
||||||
def test_approve_ppa(self):
|
def test_approve_ppa(self):
|
||||||
"""Approve packages by their PPA."""
|
"""Approve packages by their PPA."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user