diff options
author | Pierre-Louis Bonicoli <pierre-louis.bonicoli@libregerbil.fr> | 2020-09-07 13:16:57 +0200 |
---|---|---|
committer | Pierre-Louis Bonicoli <pierre-louis.bonicoli@libregerbil.fr> | 2020-09-16 16:41:55 +0200 |
commit | 9f74059a23ec6f82783109e1ca8f2ffb17d2a996 (patch) | |
tree | dd7f63d286ad2ad9d659ed3d763abf303154ea05 /tests/unit/test_gitlab_driver.py | |
parent | a0de74bef87678514749c2e8aab9cbbbca847a1e (diff) | |
download | zuul-9f74059a23ec6f82783109e1ca8f2ffb17d2a996.tar.gz |
[gitlab] approvals: fix error with community edition
'approvals_left' key is not present when 'Required Merge Request
Approvals' feature isn't available. With enterprise edition,
'approved' key can not be used since the related value is always true
when 'approvals_required' is equal to zero.
The exception was:
Traceback (most recent call last):
File "zuul/driver/gitlab/gitlabconnection.py", line 240, in run
self._handleEvent()
File "zuul/driver/gitlab/gitlabconnection.py", line 230, in _handleEvent
event=event)
File "driver/gitlab/gitlabconnection.py", line 510, in _getChange
self._updateChange(change, event)
File "driver/gitlab/gitlabconnection.py", line 521, in _updateChange
change.project.name, change.number, event=event)
File "zuul/driver/gitlab/gitlabconnection.py", line 560, in getMR
mr['approved'] = mr_approval_status['approvals_left'] == 0
KeyError: 'approvals_left'
Change-Id: I07303ae3309937046b69afe18e9e183853fd448f
Diffstat (limited to 'tests/unit/test_gitlab_driver.py')
-rw-r--r-- | tests/unit/test_gitlab_driver.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/unit/test_gitlab_driver.py b/tests/unit/test_gitlab_driver.py index 11edaf0c4..009df0a7f 100644 --- a/tests/unit/test_gitlab_driver.py +++ b/tests/unit/test_gitlab_driver.py @@ -560,6 +560,29 @@ class TestGitlabDriver(ZuulTestCase): self.assertEqual(1, len(self.history)) @simple_layout('layouts/requirements-gitlab.yaml', driver='gitlab') + def test_approval_require_community_edition(self): + + with self.fake_gitlab.enable_community_edition(): + A = self.fake_gitlab.openFakeMergeRequest( + 'org/project2', 'master', 'A') + + self.fake_gitlab.emitEvent(A.getMergeRequestOpenedEvent()) + self.waitUntilSettled() + self.assertEqual(0, len(self.history)) + + A.approved = True + + self.fake_gitlab.emitEvent(A.getMergeRequestUpdatedEvent()) + self.waitUntilSettled() + self.assertEqual(1, len(self.history)) + + A.approved = False + + self.fake_gitlab.emitEvent(A.getMergeRequestUpdatedEvent()) + self.waitUntilSettled() + self.assertEqual(1, len(self.history)) + + @simple_layout('layouts/requirements-gitlab.yaml', driver='gitlab') def test_label_require(self): A = self.fake_gitlab.openFakeMergeRequest( |