Fix gitlab squash merge

In previous change support for the gitlab merge was added, but the
parameters dict was not properly passed to the invocation method.
Fix this now and add corresponding test.

Change-Id: I781c02848abc524ca98e03984539507b769d19fe
This commit is contained in:
Artem Goncharov
2021-11-10 13:15:20 +01:00
parent 6cb2692101
commit a591476c9e
5 changed files with 53 additions and 3 deletions

View File

@@ -2103,6 +2103,7 @@ class FakeGitlabMergeRequest(object):
self.state = 'opened'
self.is_merged = False
self.merge_status = 'can_be_merged'
self.squash_merge = None
self.labels = []
self.notes = []
self.url = "https://%s/%s/merge_requests/%s" % (
@@ -2141,9 +2142,10 @@ class FakeGitlabMergeRequest(object):
self.state = 'closed'
self._updateTimeStamp()
def mergeMergeRequest(self):
def mergeMergeRequest(self, squash=None):
self.state = 'merged'
self.is_merged = True
self.squash_merge = squash
self._updateTimeStamp()
self.merged_at = self.updated_at

View File

@@ -233,7 +233,10 @@ class GitlabWebServer(object):
def put_mr_merge(self, data, project, mr):
mr = self._get_mr(project, mr)
mr.mergeMergeRequest()
squash = None
if data and isinstance(data, dict):
squash = data.get('squash')
mr.mergeMergeRequest(squash)
self.send_data({'state': 'merged'})
def put_mr_update(self, data, project, mr):

View File

@@ -0,0 +1,28 @@
- pipeline:
name: gate-merge
manager: dependent
trigger:
gitlab:
- event: gl_merge_request
action:
- opened
- changed
success:
gitlab:
merge: true
- job:
name: base
parent: null
run: playbooks/base.yaml
- job:
name: project-test
run: playbooks/project-test.yaml
- project:
name: org/project1
merge-mode: squash-merge
gate-merge:
jobs:
- project-test

View File

@@ -665,6 +665,22 @@ class TestGitlabDriver(ZuulTestCase):
self.getJobFromHistory('project-test').result)
self.assertEqual('merged', A.state)
@simple_layout('layouts/merging-gitlab-squash-merge.yaml', driver='gitlab')
def test_merge_squash(self):
A = self.fake_gitlab.openFakeMergeRequest(
'org/project1', 'master', 'A')
self.fake_gitlab.emitEvent(A.getMergeRequestOpenedEvent())
self.waitUntilSettled()
# canMerge is validated
self.assertEqual(1, len(self.history))
self.assertEqual('SUCCESS',
self.getJobFromHistory('project-test').result)
self.assertEqual('merged', A.state)
self.assertTrue(A.squash_merge)
@simple_layout('layouts/crd-gitlab.yaml', driver='gitlab')
def test_crd_dependent(self):

View File

@@ -431,7 +431,8 @@ class GitlabAPIClient():
params = {}
if method == "squash":
params['squash'] = True
resp = self.put(self.baseurl + path, zuul_event_id=zuul_event_id)
resp = self.put(
self.baseurl + path, params, zuul_event_id=zuul_event_id)
try:
self._manage_error(*resp, zuul_event_id=zuul_event_id)
if resp[0]['state'] != 'merged':