Title: [292605] trunk/Tools
Revision
292605
Author
jbed...@apple.com
Date
2022-04-08 07:52:17 -0700 (Fri, 08 Apr 2022)

Log Message

[Merge-Queue] Comment on PR when failing validation
https://bugs.webkit.org/show_bug.cgi?id=238969
<rdar://problem/91451392>

Reviewed by Aakash Jain.

* Tools/CISupport/ews-build/steps.py:
(ValidateChangeLogAndReviewer.evaluateCommand): Add BlockPullRequest on failure.
(ValidateCommitMessage.evaluateCommand): Block and comment on pull request if
validation fails.
* Tools/CISupport/ews-build/steps_unittest.py:

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

Modified Paths

Diff

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


--- trunk/Tools/CISupport/ews-build/steps.py	2022-04-08 14:32:34 UTC (rev 292604)
+++ trunk/Tools/CISupport/ews-build/steps.py	2022-04-08 14:52:17 UTC (rev 292605)
@@ -1622,7 +1622,10 @@
             log_text = self.log_observer.getStdout() + self.log_observer.getStderr()
             self.setProperty('comment_text', log_text)
             self.setProperty('build_finish_summary', 'ChangeLog validation failed')
-            self.build.addStepsAfterCurrentStep([LeaveComment(), SetCommitQueueMinusFlagOnPatch()])
+            self.build.addStepsAfterCurrentStep([
+                LeaveComment(),
+                SetCommitQueueMinusFlagOnPatch(), BlockPullRequest(),
+            ])
         return rc
 
 
@@ -4933,7 +4936,9 @@
 
 class ValidateCommitMessage(shell.ShellCommand):
     name = 'validate-commit-message'
-    haltOnFailure = True
+    haltOnFailure = False
+    flunkOnFailure = True
+    OOPS_RE = re.compile(r'\(OO*PP*S!\)')
 
     def __init__(self, **kwargs):
         super(ValidateCommitMessage, self).__init__(logEnviron=False, timeout=60, **kwargs)
@@ -4958,21 +4963,26 @@
         rc = super(ValidateCommitMessage, self).evaluateCommand(cmd)
         if rc == SKIPPED:
             return rc
-        if rc != SUCCESS:
+
+        if rc == SUCCESS:
+            self.summary = 'Validated commit message'
+            log_text = self.log_observer.getStdout()
+            if self.OOPS_RE.search(log_text):
+                self.summary = 'Commit message contains (OOPS!)'
+                rc = FAILURE
+            elif 'Reviewed by' not in log_text and 'Unreviewed' not in log_text:
+                self.summary = 'No reviewer information in commit message'
+                rc = FAILURE
+        else:
             self.summary = 'Error parsing commit message'
-            return rc
+            rc = FAILURE
 
-        log_text = self.log_observer.getStdout()
-        if '(OOPS!)' in log_text:
-            self.summary = 'Commit message contains (OOPS!)'
-            return FAILURE
-        if 'Reviewed by' not in log_text and 'Unreviewed' not in log_text:
-            self.summary = 'No reviewer information in commit message'
-            return FAILURE
+        if rc == FAILURE:
+            self.setProperty('comment_text', f"{self.summary}, blocking PR #{self.getProperty('github.number')}")
+            self.setProperty('build_finish_summary', 'Commit message validation failed')
+            self.build.addStepsAfterCurrentStep([LeaveComment(),  BlockPullRequest()])
+        return rc
 
-        self.summary = 'Validated commit message'
-        return SUCCESS
-
     def doStepIf(self, step):
         return self.getProperty('github.number')
 

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


--- trunk/Tools/CISupport/ews-build/steps_unittest.py	2022-04-08 14:32:34 UTC (rev 292604)
+++ trunk/Tools/CISupport/ews-build/steps_unittest.py	2022-04-08 14:52:17 UTC (rev 292605)
@@ -6191,7 +6191,9 @@
 Reviewed by NOBODY (OOPS!)'''),
         )
         self.expectOutcome(result=FAILURE, state_string='Commit message contains (OOPS!)')
-        return self.runStep()
+        rc = self.runStep()
+        self.assertEqual(self.getProperty('comment_text'), 'Commit message contains (OOPS!), blocking PR #1234')
+        return rc
 
     def test_failure_no_reviewer(self):
         self.setupStep(ValidateCommitMessage())
@@ -6209,7 +6211,9 @@
 <rdar://problem/90602594>'''),
         )
         self.expectOutcome(result=FAILURE, state_string='No reviewer information in commit message')
-        return self.runStep()
+        rc = self.runStep()
+        self.assertEqual(self.getProperty('comment_text'), 'No reviewer information in commit message, blocking PR #1234')
+        return rc
 
 
 class TestCanonicalize(BuildStepMixinAdditions, unittest.TestCase):

Modified: trunk/Tools/ChangeLog (292604 => 292605)


--- trunk/Tools/ChangeLog	2022-04-08 14:32:34 UTC (rev 292604)
+++ trunk/Tools/ChangeLog	2022-04-08 14:52:17 UTC (rev 292605)
@@ -1,5 +1,19 @@
 2022-04-07  Jonathan Bedard  <jbed...@apple.com>
 
+        [Merge-Queue] Comment on PR when failing validation
+        https://bugs.webkit.org/show_bug.cgi?id=238969
+        <rdar://problem/91451392>
+
+        Reviewed by Aakash Jain.
+
+        * CISupport/ews-build/steps.py:
+        (ValidateChangeLogAndReviewer.evaluateCommand): Add BlockPullRequest on failure.
+        (ValidateCommitMessage.evaluateCommand): Block and comment on pull request if
+        validation fails.
+        * CISupport/ews-build/steps_unittest.py:
+
+2022-04-07  Jonathan Bedard  <jbed...@apple.com>
+
         [Merge-Queue] Reset git-svn cache on commit failure
         https://bugs.webkit.org/show_bug.cgi?id=238975
         <rdar://problem/91454550>
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to