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 @@
'<': '<',
'&': '&',
}
+ 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