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:
@@ -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
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
28
tests/fixtures/layouts/merging-gitlab-squash-merge.yaml
vendored
Normal file
28
tests/fixtures/layouts/merging-gitlab-squash-merge.yaml
vendored
Normal 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
|
||||
@@ -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):
|
||||
|
||||
|
||||
@@ -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':
|
||||
|
||||
Reference in New Issue
Block a user