diff options
author | David Pursehouse <david.pursehouse@sonymobile.com> | 2013-09-11 15:56:22 +0900 |
---|---|---|
committer | David Pursehouse <david.pursehouse@sonymobile.com> | 2013-09-11 16:54:59 +0900 |
commit | c1467413c90b4fd9c0b67c668906e086af3f6552 (patch) | |
tree | 9b60a4d5533780b2a6dd105659a86874187e0223 | |
parent | ea6218a909f89f01819e3070139380ac5583257c (diff) | |
download | pygerrit-c1467413c90b4fd9c0b67c668906e086af3f6552.tar.gz |
Fix #8: Support the "topic-changed" stream event
Change-Id: I70b9cbea1da20a1434eea39e3d8e85e94357b792
-rw-r--r-- | pygerrit/events.py | 23 | ||||
-rw-r--r-- | testdata/topic-changed-event.txt | 13 | ||||
-rwxr-xr-x | unittests.py | 21 |
3 files changed, 56 insertions, 1 deletions
diff --git a/pygerrit/events.py b/pygerrit/events.py index f525320..3774b0c 100644 --- a/pygerrit/events.py +++ b/pygerrit/events.py @@ -301,3 +301,26 @@ class ReviewerAddedEvent(GerritEvent): return u"<ReviewerAddedEvent>: %s %s %s" % (self.change, self.patchset, self.reviewer) + + +@GerritEventFactory.register("topic-changed") +class TopicChangedEvent(GerritEvent): + + """ Gerrit "topic-changed" event. """ + + def __init__(self, json_data): + super(TopicChangedEvent, self).__init__(json_data) + try: + self.change = Change(json_data["change"]) + self.changer = Account(json_data["changer"]) + if "oldTopic" in json_data: + self.oldtopic = json_data["oldTopic"] + else: + self.oldtopic = "" + except KeyError as e: + raise GerritError("TopicChangedEvent: %s" % e) + + def __repr__(self): + return u"<TopicChangedEvent>: %s %s [%s]" % (self.change, + self.changer, + self.oldtopic) diff --git a/testdata/topic-changed-event.txt b/testdata/topic-changed-event.txt new file mode 100644 index 0000000..1847440 --- /dev/null +++ b/testdata/topic-changed-event.txt @@ -0,0 +1,13 @@ +{"type":"topic-changed", + "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"}, + "changer":{"name":"Changer Name", + "email":"changer@example.com"}, + "oldTopic":"old-topic"} diff --git a/unittests.py b/unittests.py index a9719ab..fac78e1 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, MergeFailedEvent, ReviewerAddedEvent + ErrorEvent, MergeFailedEvent, ReviewerAddedEvent, TopicChangedEvent from pygerrit.client import GerritClient from setup import REQUIRES as setup_requires @@ -291,6 +291,25 @@ class TestGerritEvents(unittest.TestCase): self.assertEquals(event.restorer.email, "restorer@example.com") self.assertEquals(event.reason, "Restore reason") + def test_topic_changed(self): + _create_event("topic-changed-event", self.gerrit) + event = self.gerrit.get_event(False) + self.assertTrue(isinstance(event, TopicChangedEvent)) + self.assertEquals(event.name, "topic-changed") + 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.changer.name, "Changer Name") + self.assertEquals(event.changer.email, "changer@example.com") + self.assertEquals(event.oldtopic, "old-topic") + def test_user_defined_event(self): _create_event("user-defined-event", self.gerrit) event = self.gerrit.get_event(False) |