summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Pursehouse <david.pursehouse@sonymobile.com>2013-09-11 15:03:39 +0900
committerDavid Pursehouse <david.pursehouse@sonymobile.com>2013-09-11 16:54:59 +0900
commit207296822d08e7d6048bbe77d84ee6e9424a72f4 (patch)
treeccf54564dd01a2d3829c1b1a8dc9c82d2cb6295c
parentb9aaf8e51a074724347d3cfb69b351918bae4b98 (diff)
downloadpygerrit-207296822d08e7d6048bbe77d84ee6e9424a72f4.tar.gz
Fix #6: Support the "merge-failed" stream event
Change-Id: I3308b44dc1bbfcaa70e38cb4857c2241c551cfa4
-rw-r--r--pygerrit/events.py21
-rw-r--r--testdata/merge-failed-event.txt19
-rwxr-xr-xunittests.py27
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)