Title: [288740] trunk/Tools
Revision
288740
Author
[email protected]
Date
2022-01-28 08:00:32 -0800 (Fri, 28 Jan 2022)

Log Message

[EWS] Only make a single request to GitHub when validating PR
https://bugs.webkit.org/show_bug.cgi?id=235716
<rdar://problem/88133197>

Reviewed by Aakash Jain.

* Tools/CISupport/ews-build/steps.py:
(GitHubMixin._is_pr_closed): Accept pr_json, do not make request.
(GitHubMixin._is_pr_obsolete): Ditto.
(ValidateChange.validate_github): Make request and pass json to functions.
* Tools/CISupport/ews-build/steps_unittest.py:

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

Modified Paths

Diff

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


--- trunk/Tools/CISupport/ews-build/steps.py	2022-01-28 15:27:31 UTC (rev 288739)
+++ trunk/Tools/CISupport/ews-build/steps.py	2022-01-28 16:00:32 UTC (rev 288740)
@@ -169,30 +169,19 @@
             return None
         return pr_json
 
-    def _is_pr_closed(self, pr_number, repository_url=None):
-        if not pr_number:
-            self._addToLog('stdio', 'Skipping pull request status validation since pull request is None.\n')
-            return -1
-
-        pr_json = self.get_pr_json(pr_number, repository_url)
+    def _is_pr_closed(self, pr_json):
         if not pr_json or not pr_json.get('state'):
-            self._addToLog('stdio', 'Unable to fetch pull request {}.\n'.format(pr_number))
+            self._addToLog('stdio', 'Cannot determine pull request status.\n')
             return -1
         if pr_json.get('state') in self.pr_closed_states:
             return 1
         return 0
 
-    def _is_pr_obsolete(self, pr_number, repository_url=None):
-        pr_json = self.get_pr_json(pr_number, repository_url)
-        if not pr_json:
-            self._addToLog('stdio', 'Unable to fetch pull request {}.\n'.format(pr_number))
-            return -1
-
-        pr_sha = pr_json.get('head', {}).get('sha', '')
+    def _is_hash_outdated(self, pr_json):
+        pr_sha = (pr_json or {}).get('head', {}).get('sha', '')
         if not pr_sha:
-            self._addToLog('stdio', 'Failed to fetch hash of pull request {}\n'.format(pr_number))
+            self._addToLog('stdio', 'Cannot determine if hash is outdated or not.\n')
             return -1
-
         return 0 if pr_sha == self.getProperty('github.head.sha', '?') else 1
 
 
@@ -1192,9 +1181,9 @@
             self._addToLog('stdio', 'Bug is open.\n')
         if self.verifyObsolete:
             self._addToLog('stdio', 'Change is not obsolete.\n')
-        if self.verifyReviewDenied:
+        if self.verifyReviewDenied and patch_id:
             self._addToLog('stdio', 'Change has not been denied.\n')
-        if self.verifycqplus:
+        if self.verifycqplus and patch_id:
             self._addToLog('stdio', 'Change is in commit queue.\n')
             self._addToLog('stdio', 'Change has been reviewed.\n')
         self.finished(SUCCESS)
@@ -1239,14 +1228,18 @@
 
         repository_url = self.getProperty('repository', '')
 
-        pr_closed = self._is_pr_closed(pr_number, repository_url=repository_url) if self.verifyBugClosed else 0
+        pr_json = self.get_pr_json(pr_number, repository_url)
+        if not pr_json:
+            self._addToLog('stdio', 'Unable to fetch pull request {}.\n'.format(pr_number))
+
+        pr_closed = self._is_pr_closed(pr_json) if self.verifyBugClosed else 0
         if pr_closed == 1:
             self.skip_build('Pull request {} is already closed'.format(pr_number))
             return False
 
-        obsolete = self._is_pr_obsolete(pr_number, repository_url=repository_url) if self.verifyObsolete else 0
+        obsolete = self._is_hash_outdated(pr_json) if self.verifyObsolete else 0
         if obsolete == 1:
-            self.skip_build('Pull request {} (sha {}) is obsolete'.format(pr_number, self.getProperty('github.head.sha', '?')[:HASH_LENGTH_TO_DISPLAY]))
+            self.skip_build('Hash {} on PR {} is outdated'.format(self.getProperty('github.head.sha', '?')[:HASH_LENGTH_TO_DISPLAY], pr_number))
             return False
 
         if obsolete == -1 or pr_closed == -1:

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


--- trunk/Tools/CISupport/ews-build/steps_unittest.py	2022-01-28 15:27:31 UTC (rev 288739)
+++ trunk/Tools/CISupport/ews-build/steps_unittest.py	2022-01-28 16:00:32 UTC (rev 288740)
@@ -4740,7 +4740,7 @@
         self.setProperty('github.number', '1234')
         self.setProperty('repository', 'https://github.com/WebKit/WebKit')
         self.setProperty('github.head.sha', '1ad60d45a112301f7b9f93dac06134524dae8480')
-        self.expectOutcome(result=FAILURE, state_string='Pull request 1234 (sha 1ad60d45) is obsolete')
+        self.expectOutcome(result=FAILURE, state_string='Hash 1ad60d45 on PR 1234 is outdated')
         rc = self.runStep()
         self.assertEqual(self.getProperty('fast_commit_queue'), None, 'fast_commit_queue is unexpectedly set')
         return rc

Modified: trunk/Tools/ChangeLog (288739 => 288740)


--- trunk/Tools/ChangeLog	2022-01-28 15:27:31 UTC (rev 288739)
+++ trunk/Tools/ChangeLog	2022-01-28 16:00:32 UTC (rev 288740)
@@ -1,3 +1,17 @@
+2022-01-27  Jonathan Bedard  <[email protected]>
+
+        [EWS] Only make a single request to GitHub when validating PR
+        https://bugs.webkit.org/show_bug.cgi?id=235716
+        <rdar://problem/88133197>
+
+        Reviewed by Aakash Jain.
+
+        * CISupport/ews-build/steps.py:
+        (GitHubMixin._is_pr_closed): Accept pr_json, do not make request.
+        (GitHubMixin._is_pr_obsolete): Ditto.
+        (ValidateChange.validate_github): Make request and pass json to functions.
+        * CISupport/ews-build/steps_unittest.py:
+
 2022-01-28  Carlos Garcia Campos  <[email protected]>
 
         [GTK][a11y] WTR: implement AccessibilityUIElement::isIgnored() for ATSPI
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to