Merge "gitlab: support the labeled event"

This commit is contained in:
Zuul
2020-08-13 23:34:54 +00:00
committed by Gerrit Code Review
7 changed files with 78 additions and 13 deletions

View File

@@ -1810,7 +1810,7 @@ class FakeGitlabMergeRequest(object):
def _updateTimeStamp(self):
self.updated_at = datetime.datetime.now()
def getMergeRequestEvent(self, action):
def getMergeRequestEvent(self, action, include_labels=False):
name = 'gl_merge_request'
data = {
'object_kind': 'merge_request',
@@ -1829,6 +1829,14 @@ class FakeGitlabMergeRequest(object):
'action': action
},
}
if include_labels:
data['labels'] = [{'title': label} for label in self.labels]
data['changes'] = {
'labels': {
'previous': [],
'current': data['labels']
}
}
return (name, data)
def getMergeRequestOpenedEvent(self):
@@ -1846,6 +1854,10 @@ class FakeGitlabMergeRequest(object):
self.approved = False
return self.getMergeRequestEvent(action='unapproved')
def getMergeRequestLabeledEvent(self, labels):
self.labels = labels
return self.getMergeRequestEvent(action='update', include_labels=True)
def getMergeRequestCommentedEvent(self, note):
self.addNote(note)
note_date = self.notes[-1]['created_at'].strftime(

View File

@@ -32,6 +32,17 @@
- approved
- unapproved
- pipeline:
name: check-labeled
manager: independent
trigger:
gitlab:
- event: gl_merge_request
action:
- labeled
labels:
- gateit
- pipeline:
name: post
post-review: true
@@ -75,6 +86,10 @@
name: project-test-approval
run: playbooks/project-test-approval.yaml
- job:
name: project-test-labeled
run: playbooks/project-test-labeled.yaml
- project:
name: org/project
check:
@@ -84,6 +99,9 @@
check-approval:
jobs:
- project-test-approval
check-labeled:
jobs:
- project-test-labeled
post:
jobs:
- project-post-job

View File

@@ -161,6 +161,21 @@ class TestGitlabDriver(ZuulTestCase):
zuulvars = job.parameters['zuul']
self.assertEqual('check-approval', zuulvars['pipeline'])
@simple_layout('layouts/basic-gitlab.yaml', driver='gitlab')
def test_merge_request_labeled(self):
A = self.fake_gitlab.openFakeMergeRequest('org/project', 'master', 'A')
self.fake_gitlab.emitEvent(A.getMergeRequestLabeledEvent(
labels=('label1', 'label2')))
self.waitUntilSettled()
self.assertEqual(0, len(self.history))
self.fake_gitlab.emitEvent(A.getMergeRequestLabeledEvent(
labels=('gateit', )))
self.waitUntilSettled()
self.assertEqual(1, len(self.history))
@simple_layout('layouts/basic-gitlab.yaml', driver='gitlab')
def test_merge_request_updated_builds_aborted(self):