Commit queue failed to land a bug, 'NoneType' object has no attribute 'strip'
authorjbedard@apple.com <jbedard@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Jan 2018 00:19:51 +0000 (00:19 +0000)
committerjbedard@apple.com <jbedard@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Jan 2018 00:19:51 +0000 (00:19 +0000)
https://bugs.webkit.org/show_bug.cgi?id=181561
<rdar://problem/36452652>

Reviewed by Aakash Jain.

BeautifulSoup.find may return None, this case should be gracefully handled.

* Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
(BugzillaQueries._parse_result_count):
(BugzillaQueries._fetch_bugs_from_advanced_query): Added logging.

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

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

index 795c874..2e17888 100644 (file)
@@ -1,3 +1,17 @@
+2018-01-11  Jonathan Bedard  <jbedard@apple.com>
+
+        Commit queue failed to land a bug, 'NoneType' object has no attribute 'strip'
+        https://bugs.webkit.org/show_bug.cgi?id=181561
+        <rdar://problem/36452652>
+
+        Reviewed by Aakash Jain.
+
+        BeautifulSoup.find may return None, this case should be gracefully handled.
+
+        * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
+        (BugzillaQueries._parse_result_count):
+        (BugzillaQueries._fetch_bugs_from_advanced_query): Added logging.
+
 2018-01-11  Alexey Proskuryakov  <ap@apple.com>
 
         run-webkit-tests fails when there is a curly brace in Xcode build output
 2018-01-11  Alexey Proskuryakov  <ap@apple.com>
 
         run-webkit-tests fails when there is a curly brace in Xcode build output
index b10c96f..988f4bc 100644 (file)
@@ -139,6 +139,9 @@ class BugzillaQueries(object):
     # This is kinda a hack.  There is probably a better way to get this information from bugzilla.
     def _parse_result_count(self, results_page):
         result_count_text = BeautifulSoup(results_page).find(attrs={'class': 'bz_result_count'}).string
     # This is kinda a hack.  There is probably a better way to get this information from bugzilla.
     def _parse_result_count(self, results_page):
         result_count_text = BeautifulSoup(results_page).find(attrs={'class': 'bz_result_count'}).string
+        if result_count_text is None:
+            _log.warn("BeautifulSoup returned None while finding class: bz_result_count in:\n{}".format(results_page))
+            return 0
         result_count_parts = result_count_text.strip().split(" ")
         if result_count_parts[0] == "Zarro":
             return 0
         result_count_parts = result_count_text.strip().split(" ")
         if result_count_parts[0] == "Zarro":
             return 0
@@ -162,6 +165,7 @@ class BugzillaQueries(object):
             bug_id = int(results_url.split("=")[-1])
             return [self._fetch_bug(bug_id)]
         if not self._parse_result_count(results_page):
             bug_id = int(results_url.split("=")[-1])
             return [self._fetch_bug(bug_id)]
         if not self._parse_result_count(results_page):
+            _log.warn('Failed to find bugs for {}'.format(results_url))
             return []
         # Bugzilla results pages have an "XML" submit button at the bottom
         # which can be used to get an XML page containing all of the <bug> elements.
             return []
         # Bugzilla results pages have an "XML" submit button at the bottom
         # which can be used to get an XML page containing all of the <bug> elements.