diff options
author | Zuul <zuul@review.opendev.org> | 2019-09-20 19:00:42 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2019-09-20 19:00:42 +0000 |
commit | ad48d852a433d77849bd7a276b2376848df98af8 (patch) | |
tree | ba76d1c5763a39c69c84e1e2906e2b3ea15d9c16 | |
parent | 7266277177070a276e698c9c01e5099d7607ef64 (diff) | |
parent | 4fb8f839459249729d5350364086f9b2f32703b8 (diff) | |
download | zuul-ad48d852a433d77849bd7a276b2376848df98af8.tar.gz |
Merge "Pagure - handles pull-request.closed event"
-rw-r--r-- | doc/source/admin/drivers/pagure.rst | 4 | ||||
-rw-r--r-- | doc/source/admin/examples/pipelines/pagure-reference-pipelines.yaml | 22 | ||||
-rw-r--r-- | tests/base.py | 9 | ||||
-rw-r--r-- | tests/fixtures/layouts/requirements-pagure.yaml | 22 | ||||
-rw-r--r-- | tests/unit/test_pagure_driver.py | 23 | ||||
-rw-r--r-- | zuul/driver/pagure/pagureconnection.py | 9 |
6 files changed, 88 insertions, 1 deletions
diff --git a/doc/source/admin/drivers/pagure.rst b/doc/source/admin/drivers/pagure.rst index 889ba8d37..84eec5dce 100644 --- a/doc/source/admin/drivers/pagure.rst +++ b/doc/source/admin/drivers/pagure.rst @@ -101,6 +101,10 @@ the following options. Pull request synchronized. + .. value:: closed + + Pull request closed. + .. value:: comment Comment added to pull request. diff --git a/doc/source/admin/examples/pipelines/pagure-reference-pipelines.yaml b/doc/source/admin/examples/pipelines/pagure-reference-pipelines.yaml index a9a0a8b4c..b9a9d5fe0 100644 --- a/doc/source/admin/examples/pipelines/pagure-reference-pipelines.yaml +++ b/doc/source/admin/examples/pipelines/pagure-reference-pipelines.yaml @@ -68,6 +68,28 @@ sqlreporter: - pipeline: + name: promote + post-review: true + manager: supercedent + precedence: high + require: + pagure.io: + merged: True + open: False + trigger: + pagure.io: + - event: pg_pull_request + action: closed + success: + pagure.io: + comment: true + sqlreporter: + failure: + pagure.io: + comment: true + sqlreporter: + +- pipeline: name: post post-review: true manager: independent diff --git a/tests/base.py b/tests/base.py index 58d7ce029..51b2d08ab 100644 --- a/tests/base.py +++ b/tests/base.py @@ -1157,6 +1157,15 @@ class FakePagurePullRequest(object): def getPullRequestOpenedEvent(self): return self._getPullRequestEvent('pull-request.new') + def getPullRequestClosedEvent(self, merged=True): + if merged: + self.is_merged = True + self.status = 'Merged' + else: + self.is_merged = False + self.status = 'Closed' + return self._getPullRequestEvent('pull-request.closed') + def getPullRequestUpdatedEvent(self): self._addCommitInPR() self.addComment( diff --git a/tests/fixtures/layouts/requirements-pagure.yaml b/tests/fixtures/layouts/requirements-pagure.yaml index 36f785f30..998fa7fdb 100644 --- a/tests/fixtures/layouts/requirements-pagure.yaml +++ b/tests/fixtures/layouts/requirements-pagure.yaml @@ -66,6 +66,22 @@ pagure: status: 'success' +- pipeline: + name: require-trigger-pg-closed-merged + precedence: high + manager: independent + require: + pagure: + merged: True + open: False + trigger: + pagure: + - event: pg_pull_request + action: closed + success: + pagure: + comment: true + - job: name: base parent: null @@ -103,4 +119,10 @@ name: org/project5 require-tag: jobs: + - project-test + +- project: + name: org/project6 + require-trigger-pg-closed-merged: + 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 3f023beea..deb6ea3cc 100644 --- a/tests/unit/test_pagure_driver.py +++ b/tests/unit/test_pagure_driver.py @@ -406,6 +406,29 @@ class TestPagureDriver(ZuulTestCase): self.waitUntilSettled() self.assertEqual(1, len(self.history)) + @simple_layout('layouts/requirements-pagure.yaml', driver='pagure') + def test_pull_request_closed(self): + + A = self.fake_pagure.openFakePullRequest( + 'org/project6', 'master', 'A') + + self.fake_pagure.emitEvent(A.getPullRequestOpenedEvent()) + self.waitUntilSettled() + self.assertEqual(0, len(self.history)) + + # Validate a closed but not merged PR does not trigger the pipeline + self.fake_pagure.emitEvent(A.getPullRequestClosedEvent(merged=False)) + self.waitUntilSettled() + self.assertEqual(0, len(self.history)) + + # Reset the status to Open + # Validate a closed and merged PR triggers the pipeline + A.status = 'Open' + A.is_merged = False + self.fake_pagure.emitEvent(A.getPullRequestClosedEvent()) + self.waitUntilSettled() + self.assertEqual(1, len(self.history)) + @simple_layout('layouts/merging-pagure.yaml', driver='pagure') def test_merge_action_in_independent(self): diff --git a/zuul/driver/pagure/pagureconnection.py b/zuul/driver/pagure/pagureconnection.py index 313a900bf..d844a00b5 100644 --- a/zuul/driver/pagure/pagureconnection.py +++ b/zuul/driver/pagure/pagureconnection.py @@ -199,6 +199,7 @@ class PagureEventConnector(threading.Thread): r"^\*\*Metadata Update", re.MULTILINE) self.event_handler_mapping = { 'pull-request.comment.added': self._event_issue_comment, + 'pull-request.closed': self._event_pull_request_closed, 'pull-request.new': self._event_pull_request, 'pull-request.flag.added': self._event_flag_added, 'git.receive': self._event_ref_updated, @@ -312,12 +313,18 @@ class PagureEventConnector(threading.Thread): return event def _event_pull_request(self, body): - """ Handles pull request event """ + """ Handles pull request opened event """ # https://fedora-fedmsg.readthedocs.io/en/latest/topics.html#pagure-pull-request-new event, data = self._event_base(body) event.action = 'opened' return event + def _event_pull_request_closed(self, body): + """ Handles pull request closed event """ + event, data = self._event_base(body) + event.action = 'closed' + return event + def _event_flag_added(self, body): """ Handles flag added event """ # https://fedora-fedmsg.readthedocs.io/en/latest/topics.html#pagure-pull-request-flag-added |