diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/base.py | 25 | ||||
-rw-r--r-- | tests/fixtures/layouts/requirements-pagure.yaml | 40 | ||||
-rw-r--r-- | tests/unit/test_pagure_driver.py | 46 |
3 files changed, 108 insertions, 3 deletions
diff --git a/tests/base.py b/tests/base.py index 01b8da1ac..875bb82e6 100644 --- a/tests/base.py +++ b/tests/base.py @@ -827,6 +827,7 @@ class FakePagurePullRequest(object): self.comments = [] self.flags = [] self.files = {} + self.tags = [] self.cached_merge_status = '' self.threshold_reached = False self.commit_stop = None @@ -841,16 +842,17 @@ class FakePagurePullRequest(object): self._addCommitInPR(files=files) self._updateTimeStamp() - def _getPullRequestEvent(self, action): + def _getPullRequestEvent(self, action, pull_data_field='pullrequest'): name = 'pg_pull_request' data = { 'msg': { - 'pullrequest': { + pull_data_field: { 'branch': self.branch, 'comments': self.comments, 'commit_start': self.commit_start, 'commit_stop': self.commit_stop, 'date_created': '0', + 'tags': self.tags, 'initial_comment': self.initial_comment, 'id': self.number, 'project': { @@ -867,6 +869,8 @@ class FakePagurePullRequest(object): } if action == 'pull-request.flag.added': data['msg']['flag'] = self.flags[0] + if action == 'pull-request.tag.added': + data['msg']['tags'] = self.tags return (name, data) def getPullRequestOpenedEvent(self): @@ -888,6 +892,20 @@ class FakePagurePullRequest(object): self._updateTimeStamp() return self._getPullRequestEvent('pull-request.initial_comment.edited') + def getPullRequestTagAddedEvent(self, tags, reset=True): + if reset: + self.tags = [] + _tags = set(self.tags) + _tags.update(set(tags)) + self.tags = list(_tags) + self.addComment( + "**Metadata Update from @pingou**:\n- " + + "Pull-request tagged with: %s" % ', '.join(tags), + True) + self._updateTimeStamp() + return self._getPullRequestEvent( + 'pull-request.tag.added', pull_data_field='pull_request') + def getPullRequestStatusSetEvent(self, status): self.addFlag( status, "https://url", "Build %s" % status) @@ -1014,7 +1032,8 @@ class FakePagureAPIClient(pagureconnection.PagureAPIClient): 'comments': pr.comments, 'commit_stop': pr.commit_stop, 'threshold_reached': pr.threshold_reached, - 'cached_merge_status': pr.cached_merge_status + 'cached_merge_status': pr.cached_merge_status, + 'tags': pr.tags, }, 200, "", "GET" match = re.match(r'.+/api/0/(.+)/pull-request/(\d+)/flag$', url) diff --git a/tests/fixtures/layouts/requirements-pagure.yaml b/tests/fixtures/layouts/requirements-pagure.yaml index 47ca6c135..36f785f30 100644 --- a/tests/fixtures/layouts/requirements-pagure.yaml +++ b/tests/fixtures/layouts/requirements-pagure.yaml @@ -38,6 +38,34 @@ pagure: status: 'success' +- pipeline: + name: trigger-tag + manager: independent + trigger: + pagure: + - event: pg_pull_request + action: tagged + tag: + - gateit + - mergeit + success: + pagure: + status: 'success' + +- pipeline: + name: require-tag + manager: independent + require: + pagure: + tags: gateit + trigger: + pagure: + - event: pg_pull_request + action: changed + success: + pagure: + status: 'success' + - job: name: base parent: null @@ -64,3 +92,15 @@ trigger-flag: jobs: - project-test + +- project: + name: org/project4 + trigger-tag: + jobs: + - project-test + +- project: + name: org/project5 + require-tag: + jobs: + - project-test
\ No newline at end of file diff --git a/tests/unit/test_pagure_driver.py b/tests/unit/test_pagure_driver.py index 4643b8620..3f023beea 100644 --- a/tests/unit/test_pagure_driver.py +++ b/tests/unit/test_pagure_driver.py @@ -360,6 +360,52 @@ class TestPagureDriver(ZuulTestCase): self.waitUntilSettled() self.assertEqual(1, len(self.history)) + @simple_layout('layouts/requirements-pagure.yaml', driver='pagure') + def test_tag_trigger(self): + + A = self.fake_pagure.openFakePullRequest( + 'org/project4', 'master', 'A') + + self.fake_pagure.emitEvent( + A.getPullRequestTagAddedEvent(["lambda"])) + self.waitUntilSettled() + self.assertEqual(0, len(self.history)) + + self.fake_pagure.emitEvent( + A.getPullRequestTagAddedEvent(["gateit", "lambda"])) + self.waitUntilSettled() + self.assertEqual(1, len(self.history)) + + self.fake_pagure.emitEvent( + A.getPullRequestTagAddedEvent(["mergeit"])) + self.waitUntilSettled() + self.assertEqual(2, len(self.history)) + + @simple_layout('layouts/requirements-pagure.yaml', driver='pagure') + def test_tag_require(self): + + A = self.fake_pagure.openFakePullRequest( + 'org/project5', 'master', 'A') + + self.fake_pagure.emitEvent(A.getPullRequestUpdatedEvent()) + self.waitUntilSettled() + self.assertEqual(0, len(self.history)) + + A.tags = ["lambda"] + self.fake_pagure.emitEvent(A.getPullRequestUpdatedEvent()) + self.waitUntilSettled() + self.assertEqual(0, len(self.history)) + + A.tags = ["lambda", "gateit"] + self.fake_pagure.emitEvent(A.getPullRequestUpdatedEvent()) + self.waitUntilSettled() + self.assertEqual(1, len(self.history)) + + A.tags = [] + self.fake_pagure.emitEvent(A.getPullRequestUpdatedEvent()) + self.waitUntilSettled() + self.assertEqual(1, len(self.history)) + @simple_layout('layouts/merging-pagure.yaml', driver='pagure') def test_merge_action_in_independent(self): |