webkitpy: Expose cc_emails and comments from bug.py
authorlevin@chromium.org <levin@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 4 Oct 2011 00:23:56 +0000 (00:23 +0000)
committerlevin@chromium.org <levin@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 4 Oct 2011 00:23:56 +0000 (00:23 +0000)
https://bugs.webkit.org/show_bug.cgi?id=69308

Reviewed by Adam Barth.

* Scripts/webkitpy/common/net/bugzilla/bug.py: Expose cc_emails and comments .
* Scripts/webkitpy/common/net/bugzilla/bugzilla.py: Add parsing support for comments.
* Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py: Fix the unit test due
to comments being exposed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@96560 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py
Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py

index af03ad4..8d5a9f0 100644 (file)
@@ -1,3 +1,15 @@
+2011-10-03  David Levin  <levin@chromium.org>
+
+        webkitpy: Expose cc_emails and comments from bug.py
+        https://bugs.webkit.org/show_bug.cgi?id=69308
+
+        Reviewed by Adam Barth.
+
+        * Scripts/webkitpy/common/net/bugzilla/bug.py: Expose cc_emails and comments .
+        * Scripts/webkitpy/common/net/bugzilla/bugzilla.py: Add parsing support for comments.
+        * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py: Fix the unit test due
+        to comments being exposed.
+
 2011-10-03  James Robinson  <jamesr@chromium.org>
 
         Add myself to the watchlist for platform/graphics/chromium
index a751a7e..f1725af 100644 (file)
@@ -53,6 +53,9 @@ class Bug(object):
     def assigned_to_email(self):
         return self.bug_dictionary["assigned_to_email"]
 
+    def cc_emails(self):
+        return self.bug_dictionary["cc_emails"]
+
     # FIXME: This information should be stored in some sort of webkit_config.py instead of here.
     unassigned_emails = frozenset([
         "webkit-unassigned@lists.webkit.org",
@@ -110,3 +113,6 @@ class Bug(object):
         # Checking committer() ensures that it was both commit-queue+'d and has
         # a valid committer.
         return filter(lambda patch: patch.committer(), patches)
+
+    def comments(self):
+        return self.bug_dictionary["comments"]
index bdd63dc..511f1bb 100644 (file)
@@ -346,11 +346,14 @@ class Bugzilla(object):
     # FIXME: Some bugzilla dates seem to have seconds in them?
     # Python does not support timezones out of the box.
     # Assume that bugzilla always uses PST (which is true for bugs.webkit.org)
-    _bugzilla_date_format = "%Y-%m-%d %H:%M"
+    _bugzilla_date_format = "%Y-%m-%d %H:%M:%S"
 
     @classmethod
     def _parse_date(cls, date_string):
         (date, time, time_zone) = date_string.split(" ")
+        if time.count(':') == 1:
+            # Add seconds into the time.
+            time += ':0'
         # Ignore the timezone because python doesn't understand timezones out of the box.
         date_string = "%s %s" % (date, time)
         return datetime.strptime(date_string, cls._bugzilla_date_format)
@@ -376,6 +379,13 @@ class Bugzilla(object):
                 element, 'commit-queue', attachment, 'committer_email')
         return attachment
 
+    def _parse_log_descr_element(self, element):
+        comment = {}
+        comment['comment_email'] = self._string_contents(element.find('who'))
+        comment['comment_date'] = self._date_contents(element.find('bug_when'))
+        comment['text'] = self._string_contents(element.find('thetext'))
+        return comment
+
     def _parse_bugs_from_xml(self, page):
         soup = BeautifulSoup(page)
         # Without the unicode() call, BeautifulSoup occasionally complains of being
@@ -395,6 +405,8 @@ class Bugzilla(object):
         bug["assigned_to_email"] = self._string_contents(soup.find("assigned_to"))
         bug["cc_emails"] = [self._string_contents(element) for element in soup.findAll('cc')]
         bug["attachments"] = [self._parse_attachment_element(element, bug["id"]) for element in soup.findAll('attachment')]
+        bug["comments"] = [self._parse_log_descr_element(element) for element in soup.findAll('long_desc')]
+
         return bug
 
     # Makes testing fetch_*_from_bug() possible until we have a better
index 85de829..3d434df 100644 (file)
@@ -191,6 +191,13 @@ ZEZpbmlzaExvYWRXaXRoUmVhc29uOnJlYXNvbl07Cit9CisKIEBlbmQKIAogI2VuZGlmCg==
             'type': 'text/plain',
             'id': 45548
         }],
+        "comments" : [{
+                'comment_date': datetime.datetime(2009, 12, 15, 15, 17, 28),
+                'comment_email': 'eric@webkit.org',
+                'text': """bug to test webkit-patch and commit-queue failures
+
+Ignore this bug.  Just for testing failure modes of webkit-patch and the commit-queue.""",
+        }]
     }
 
     # FIXME: This should move to a central location and be shared by more unit tests.