diff options
| author | David Pursehouse <david.pursehouse@sonymobile.com> | 2013-09-11 15:03:39 +0900 |
|---|---|---|
| committer | David Pursehouse <david.pursehouse@sonymobile.com> | 2013-09-11 16:54:59 +0900 |
| commit | 207296822d08e7d6048bbe77d84ee6e9424a72f4 (patch) | |
| tree | ccf54564dd01a2d3829c1b1a8dc9c82d2cb6295c | |
| parent | b9aaf8e51a074724347d3cfb69b351918bae4b98 (diff) | |
| download | pygerrit-207296822d08e7d6048bbe77d84ee6e9424a72f4.tar.gz | |
Fix #6: Support the "merge-failed" stream event
Change-Id: I3308b44dc1bbfcaa70e38cb4857c2241c551cfa4
| -rw-r--r-- | pygerrit/events.py | 21 | ||||
| -rw-r--r-- | testdata/merge-failed-event.txt | 19 | ||||
| -rwxr-xr-x | unittests.py | 27 |
3 files changed, 66 insertions, 1 deletions
diff --git a/pygerrit/events.py b/pygerrit/events.py index e91fbf4..c6ff5dd 100644 --- a/pygerrit/events.py +++ b/pygerrit/events.py @@ -203,6 +203,27 @@ class ChangeMergedEvent(GerritEvent): self.submitter) +@GerritEventFactory.register("merge-failed") +class MergeFailedEvent(GerritEvent): + + """ Gerrit "merge-failed" event. """ + + def __init__(self, json_data): + super(MergeFailedEvent, self).__init__(json_data) + try: + self.change = Change(json_data["change"]) + self.patchset = Patchset(json_data["patchSet"]) + self.submitter = Account(json_data["submitter"]) + self.reason = json_data["reason"] + except KeyError as e: + raise GerritError("MergeFailedEvent: %s" % e) + + def __repr__(self): + return u"<MergeFailedEvent>: %s %s %s" % (self.change, + self.patchset, + self.submitter) + + @GerritEventFactory.register("change-abandoned") class ChangeAbandonedEvent(GerritEvent): diff --git a/testdata/merge-failed-event.txt b/testdata/merge-failed-event.txt new file mode 100644 index 0000000..2d29d29 --- /dev/null +++ b/testdata/merge-failed-event.txt @@ -0,0 +1,19 @@ +{"type":"merge-failed", + "change":{"project":"project-name", + "branch":"branch-name", + "topic":"topic-name", + "id":"Ideadbeefdeadbeefdeadbeefdeadbeefdeadbeef", + "number":"123456", + "subject":"Commit message subject", + "owner":{"name":"Owner Name", + "email":"owner@example.com"}, + "url":"http://review.example.com/123456"}, + "patchSet":{"number":"4", + "revision":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef", + "ref":"refs/changes/56/123456/4", + "uploader":{"name":"Uploader Name", + "email":"uploader@example.com"}, + "createdOn":1341370514}, + "submitter":{"name":"Submitter Name", + "email":"submitter@example.com"}, + "reason":"Merge failed reason"} diff --git a/unittests.py b/unittests.py index 1cf617b..0ff05a7 100755 --- a/unittests.py +++ b/unittests.py @@ -33,7 +33,7 @@ from pygerrit.events import PatchsetCreatedEvent, \ RefUpdatedEvent, ChangeMergedEvent, CommentAddedEvent, \ ChangeAbandonedEvent, ChangeRestoredEvent, \ DraftPublishedEvent, GerritEventFactory, GerritEvent, UnhandledEvent, \ - ErrorEvent + ErrorEvent, MergeFailedEvent from pygerrit.client import GerritClient from setup import REQUIRES as setup_requires @@ -173,6 +173,31 @@ class TestGerritEvents(unittest.TestCase): self.assertEquals(event.submitter.name, "Submitter Name") self.assertEquals(event.submitter.email, "submitter@example.com") + def test_merge_failed(self): + _create_event("merge-failed-event", self.gerrit) + event = self.gerrit.get_event(False) + self.assertTrue(isinstance(event, MergeFailedEvent)) + self.assertEquals(event.name, "merge-failed") + self.assertEquals(event.change.project, "project-name") + self.assertEquals(event.change.branch, "branch-name") + self.assertEquals(event.change.topic, "topic-name") + self.assertEquals(event.change.change_id, + "Ideadbeefdeadbeefdeadbeefdeadbeefdeadbeef") + self.assertEquals(event.change.number, "123456") + self.assertEquals(event.change.subject, "Commit message subject") + self.assertEquals(event.change.url, "http://review.example.com/123456") + self.assertEquals(event.change.owner.name, "Owner Name") + self.assertEquals(event.change.owner.email, "owner@example.com") + self.assertEquals(event.patchset.number, "4") + self.assertEquals(event.patchset.revision, + "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef") + self.assertEquals(event.patchset.ref, "refs/changes/56/123456/4") + self.assertEquals(event.patchset.uploader.name, "Uploader Name") + self.assertEquals(event.patchset.uploader.email, "uploader@example.com") + self.assertEquals(event.submitter.name, "Submitter Name") + self.assertEquals(event.submitter.email, "submitter@example.com") + self.assertEquals(event.reason, "Merge failed reason") + def test_comment_added(self): _create_event("comment-added-event", self.gerrit) event = self.gerrit.get_event(False) |
