Merge "Add support for Gerrit v2.16's change URL schema"

This commit is contained in:
Zuul 2018-11-27 05:45:38 +00:00 committed by Gerrit Code Review
commit be4dc6e9d2
2 changed files with 19 additions and 5 deletions

View File

@ -22,7 +22,7 @@ from tests.base import (
class TestGerritCRD(ZuulTestCase):
tenant_config_file = 'config/single-tenant/main.yaml'
def test_crd_gate(self):
def _test_crd_gate(self, url_fmt):
"Test cross-repo dependencies"
A = self.fake_gerrit.addFakeChange('org/project1', 'master', 'A')
B = self.fake_gerrit.addFakeChange('org/project2', 'master', 'B')
@ -52,9 +52,9 @@ class TestGerritCRD(ZuulTestCase):
A.setDependsOn(AM1, 1)
AM1.setDependsOn(AM2, 1)
# So that at least one test uses the /#/c/ form of the url,
# use it here.
url = 'https://%s/#/c/%s' % (B.gerrit.server, B.number)
url = url_fmt.format(baseurl=B.gerrit.baseurl.rstrip('/'),
project=B.project,
change_no=B.number)
A.data['commitMessage'] = '%s\n\nDepends-On: %s\n' % (
A.subject, url)
@ -91,6 +91,20 @@ class TestGerritCRD(ZuulTestCase):
'project-merge', 'org/project1').changes
self.assertEqual(changes, '2,1 1,1')
# Different versions of Gerrit have used 3 different URL schemata for
# changes - repeat the simple test on each of the 3 to ensure they can be
# parsed, the other tests just use the default URL schema provided in
# FakeGerritChange.data['url'] .
def test_crd_gate_url_schema1(self):
self._test_crd_gate('{baseurl}/{change_no}')
def test_crd_gate_url_schema2(self):
self._test_crd_gate('{baseurl}/#/c/{change_no}')
def test_crd_gate_url_schema3(self):
self._test_crd_gate('{baseurl}/c/{project}/+/{change_no}/')
def test_crd_gate_triangle(self):
A = self.fake_gerrit.addFakeChange('org/project1', 'master', 'A')
B = self.fake_gerrit.addFakeChange('org/project2', 'master', 'B')

View File

@ -38,7 +38,7 @@ class GerritSource(BaseSource):
prefix_ui += '/'
self.change_re = re.compile(
r"/%s(\#\/c\/)?(\d+)[\w]*" % prefix_ui)
r"/%s(\#\/c\/|c\/.*\/\+\/)?(\d+)[\w]*" % prefix_ui)
def getRefSha(self, project, ref):
return self.connection.getRefSha(project, ref)