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): class TestGerritCRD(ZuulTestCase):
tenant_config_file = 'config/single-tenant/main.yaml' tenant_config_file = 'config/single-tenant/main.yaml'
def test_crd_gate(self): def _test_crd_gate(self, url_fmt):
"Test cross-repo dependencies" "Test cross-repo dependencies"
A = self.fake_gerrit.addFakeChange('org/project1', 'master', 'A') A = self.fake_gerrit.addFakeChange('org/project1', 'master', 'A')
B = self.fake_gerrit.addFakeChange('org/project2', 'master', 'B') B = self.fake_gerrit.addFakeChange('org/project2', 'master', 'B')
@ -52,9 +52,9 @@ class TestGerritCRD(ZuulTestCase):
A.setDependsOn(AM1, 1) A.setDependsOn(AM1, 1)
AM1.setDependsOn(AM2, 1) AM1.setDependsOn(AM2, 1)
# So that at least one test uses the /#/c/ form of the url, url = url_fmt.format(baseurl=B.gerrit.baseurl.rstrip('/'),
# use it here. project=B.project,
url = 'https://%s/#/c/%s' % (B.gerrit.server, B.number) change_no=B.number)
A.data['commitMessage'] = '%s\n\nDepends-On: %s\n' % ( A.data['commitMessage'] = '%s\n\nDepends-On: %s\n' % (
A.subject, url) A.subject, url)
@ -91,6 +91,20 @@ class TestGerritCRD(ZuulTestCase):
'project-merge', 'org/project1').changes 'project-merge', 'org/project1').changes
self.assertEqual(changes, '2,1 1,1') 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): def test_crd_gate_triangle(self):
A = self.fake_gerrit.addFakeChange('org/project1', 'master', 'A') A = self.fake_gerrit.addFakeChange('org/project1', 'master', 'A')
B = self.fake_gerrit.addFakeChange('org/project2', 'master', 'B') B = self.fake_gerrit.addFakeChange('org/project2', 'master', 'B')

View File

@ -38,7 +38,7 @@ class GerritSource(BaseSource):
prefix_ui += '/' prefix_ui += '/'
self.change_re = re.compile( 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): def getRefSha(self, project, ref):
return self.connection.getRefSha(project, ref) return self.connection.getRefSha(project, ref)