summaryrefslogtreecommitdiff
path: root/tests/unit/test_gitlab_driver.py
diff options
context:
space:
mode:
authorPierre-Louis Bonicoli <pierre-louis.bonicoli@libregerbil.fr>2020-09-07 13:16:57 +0200
committerPierre-Louis Bonicoli <pierre-louis.bonicoli@libregerbil.fr>2020-09-16 16:41:55 +0200
commit9f74059a23ec6f82783109e1ca8f2ffb17d2a996 (patch)
treedd7f63d286ad2ad9d659ed3d763abf303154ea05 /tests/unit/test_gitlab_driver.py
parenta0de74bef87678514749c2e8aab9cbbbca847a1e (diff)
downloadzuul-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.py23
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(