Title: [292405] trunk/Tools
Revision
292405
Author
jbed...@apple.com
Date
2022-04-05 11:05:12 -0700 (Tue, 05 Apr 2022)

Log Message

[Merge-Queue] Extract bug_id when updating pull-request
https://bugs.webkit.org/show_bug.cgi?id=238772
<rdar://problem/91263398>

Reviewed by Aakash Jain.

* Tools/CISupport/ews-build/steps.py:
(LeaveComment.start): Leave comment on both bugzilla and pull request.
(LeaveComment.getResultSummary): Ditto.
(UpdatePullRequest):
(UpdatePullRequest.bug_id_from_log): Extract bug_id from commit message.
(UpdatePullRequest.evaluateCommand): Set bug_id property
* Tools/CISupport/ews-build/steps_unittest.py:

Canonical link: https://commits.webkit.org/249267@main

Modified Paths

Diff

Modified: trunk/Tools/CISupport/ews-build/steps.py (292404 => 292405)


--- trunk/Tools/CISupport/ews-build/steps.py	2022-04-05 18:04:05 UTC (rev 292404)
+++ trunk/Tools/CISupport/ews-build/steps.py	2022-04-05 18:05:12 UTC (rev 292405)
@@ -1764,11 +1764,12 @@
             self.finished(WARNINGS)
             return None
 
-        if self.pr_number:
-            rc = SUCCESS if self.comment_on_pr(self.pr_number, self.comment_text) else FAILURE
-        elif self.bug_id:
-            rc = self.comment_on_bug(self.bug_id, self.comment_text)
-        else:
+        rc = SUCCESS
+        if self.pr_number and not self.comment_on_pr(self.pr_number, self.comment_text):
+            rc = FAILURE
+        if self.bug_id and self.comment_on_bug(self.bug_id, self.comment_text) != SUCCESS:
+            rc = FAILURE
+        if not self.pr_number and not self.bug_id:
             self._addToLog('stdio', 'No bug or pull request to comment to.\n')
             self.descriptionDone = 'No bug or PR found'
             self.finished(FAILURE)
@@ -1779,19 +1780,24 @@
 
     def getResultSummary(self):
         if self.results == SUCCESS:
+            if self.pr_number and self.bug_id:
+                return {'step': f'Added comment on PR {self.pr_number} and added comment on bug {self.bug_id}'}
             if self.pr_number:
                 return {'step': f'Added comment on PR {self.pr_number}'}
-            elif self.bug_id:
+            if self.bug_id:
                 return {'step': f'Added comment on bug {self.bug_id}'}
-        elif self.results == SKIPPED:
-            return buildstep.BuildStep.getResultSummary(self)
 
-        if self.pr_number:
-            return {'step': f'Failed to add comment on PR {self.pr_number}'}
-        elif self.bug_id:
-            return {'step': f'Failed to add comment on bug {self.bug_id}'}
-        return {'step': 'Failed to add comment'}
+        if self.results == FAILURE:
+            if self.pr_number and self.bug_id:
+                return {'step': f'Failed to add comment on PR {self.pr_number} and failed to add comment on bug {self.bug_id}'}
+            if self.pr_number:
+                return {'step': f'Failed to add comment on PR {self.pr_number}'}
+            if self.bug_id:
+                return {'step': f'Failed to add comment on bug {self.bug_id}'}
+            return {'step': 'Failed to add comment'}
 
+        return buildstep.BuildStep.getResultSummary(self)
+
     def doStepIf(self, step):
         return CURRENT_HOSTNAME == EWS_BUILD_HOSTNAME
 
@@ -4973,6 +4979,13 @@
         '<': '&lt;',
         '&': '&amp;',
     }
+    BUGS_RE = [
+        re.compile(r'\Awebkit.org/b/(?P<id>\d+)\Z'),
+        re.compile(r'\Ahttps?://webkit.org/b/(?P<id>\d+)\Z'),
+        re.compile(r'\Awebkit.org/b/(?P<id>\d+)\Z'),
+        re.compile(r'\Abugs.webkit.org/show_bug.cgi\?id=(?P<id>\d+)\Z'),
+        re.compile(r'\Ahttps?://bugs.webkit.org/show_bug.cgi\?id=(?P<id>\d+)\Z'),
+    ]
 
     @classmethod
     def escape_html(cls, message):
@@ -5003,6 +5016,16 @@
             return {'step': 'Failed to update pull request'}
         return super(UpdatePullRequest, self).getResultSummary()
 
+    @classmethod
+    def bug_id_from_log(cls, lines):
+        for line in lines:
+            for word in line.split():
+                for candidate in cls.BUGS_RE:
+                    match = candidate.match(word)
+                    if match:
+                        return match.group('id')
+        return None
+
     def evaluateCommand(self, cmd):
         rc = super(UpdatePullRequest, self).evaluateCommand(cmd)
 
@@ -5014,6 +5037,10 @@
             description += self.escape_html(line[4:] + '\n')
         description += '</pre>\n'
 
+        bug_id = self.bug_id_from_log(loglines)
+        if bug_id:
+            self.setProperty('bug_id', bug_id)
+
         if not self.update_pr(
             self.getProperty('github.number'),
             title=title,

Modified: trunk/Tools/CISupport/ews-build/steps_unittest.py (292404 => 292405)


--- trunk/Tools/CISupport/ews-build/steps_unittest.py	2022-04-05 18:04:05 UTC (rev 292404)
+++ trunk/Tools/CISupport/ews-build/steps_unittest.py	2022-04-05 18:05:12 UTC (rev 292405)
@@ -6344,7 +6344,9 @@
         )
         self.expectOutcome(result=FAILURE, state_string='Failed to update pull request')
         with current_hostname(EWS_BUILD_HOSTNAME):
-            return self.runStep()
+            rc = self.runStep()
+            self.assertEqual(self.getProperty('bug_id'), '238553')
+            return rc
 
 
 if __name__ == '__main__':

Modified: trunk/Tools/ChangeLog (292404 => 292405)


--- trunk/Tools/ChangeLog	2022-04-05 18:04:05 UTC (rev 292404)
+++ trunk/Tools/ChangeLog	2022-04-05 18:05:12 UTC (rev 292405)
@@ -1,3 +1,19 @@
+2022-04-05  Jonathan Bedard  <jbed...@apple.com>
+
+        [Merge-Queue] Extract bug_id when updating pull-request
+        https://bugs.webkit.org/show_bug.cgi?id=238772
+        <rdar://problem/91263398>
+
+        Reviewed by Aakash Jain.
+
+        * CISupport/ews-build/steps.py:
+        (LeaveComment.start): Leave comment on both bugzilla and pull request.
+        (LeaveComment.getResultSummary): Ditto.
+        (UpdatePullRequest):
+        (UpdatePullRequest.bug_id_from_log): Extract bug_id from commit message.
+        (UpdatePullRequest.evaluateCommand): Set bug_id property
+        * CISupport/ews-build/steps_unittest.py:
+
 2022-04-05  Yury Semikhatsky  <yu...@chromium.org>
 
         Do not create network process in ~WebsiteDataStore destructor
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to