Title: [257284] trunk/Tools
Revision
257284
Author
aakash_j...@apple.com
Date
2020-02-24 16:55:54 -0800 (Mon, 24 Feb 2020)

Log Message

[ews] commit-queue should check that patch have appropriate review flag
https://bugs.webkit.org/show_bug.cgi?id=208138

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/steps.py:
(BugzillaMixin._is_patch_obsolete): Drive-by fix to set build properties for patch author, commiter and reviewer.
(BugzillaMixin._is_patch_cq_plus):
(BugzillaMixin._does_patch_have_acceptable_review_flag): Method to check if patch have r? or r- flag.
(ValidatePatch.start):

Modified Paths

Diff

Modified: trunk/Tools/BuildSlaveSupport/ews-build/steps.py (257283 => 257284)


--- trunk/Tools/BuildSlaveSupport/ews-build/steps.py	2020-02-25 00:48:50 UTC (rev 257283)
+++ trunk/Tools/BuildSlaveSupport/ews-build/steps.py	2020-02-25 00:55:54 UTC (rev 257284)
@@ -387,8 +387,9 @@
             return -1
 
         patch_author = patch_json.get('creator')
+        self.setProperty('patch_author', patch_author)
         if self.addURLs:
-            self.addURL('Patch by: {}'.format(patch_author), 'mailto:{}'.format(patch_author))
+            self.addURL('Patch by: {}'.format(patch_author), '')
         return patch_json.get('is_obsolete')
 
     def _is_patch_review_denied(self, patch_id):
@@ -410,9 +411,33 @@
 
         for flag in patch_json.get('flags', []):
             if flag.get('name') == 'commit-queue' and flag.get('status') == '+':
+                self.setProperty('patch_committer', flag.get('setter', ''))
                 return 1
         return 0
 
+    def _does_patch_have_acceptable_review_flag(self, patch_id):
+        patch_json = self.get_patch_json(patch_id)
+        if not patch_json:
+            self._addToLog('stdio', 'Unable to fetch patch {}.\n'.format(patch_id))
+            return -1
+
+        for flag in patch_json.get('flags', []):
+            if flag.get('name') == 'review':
+                review_status = flag.get('status')
+                if review_status == '+':
+                    patch_reviewer = flag.get('setter', '')
+                    self.setProperty('patch_reviewer', patch_reviewer)
+                    if self.addURLs:
+                        self.addURL('Reviewed by: {}'.format(patch_reviewer), '')
+                    if patch_reviewer == patch_json.get('creator'):
+                        self._addToLog('stdio', 'Patch {} is r+ by the patch author {} itself. This seems like a mistake.\n'.format(patch_id, patch_reviewer))
+                        return 0
+                    return 1
+                if review_status in ['-', '?']:
+                    self._addToLog('stdio', 'Patch {} is marked r{}.\n'.format(patch_id, review_status))
+                    return 0
+        return 1  # Patch without review flag is acceptable, since the ChangeLog might have 'Reviewed by' in it.
+
     def _is_bug_closed(self, bug_id):
         if not bug_id:
             self._addToLog('stdio', 'Skipping bug status validation since bug id is None.\n')
@@ -566,6 +591,11 @@
             self.skip_build('Patch {} is not marked cq+.'.format(patch_id))
             return None
 
+        acceptable_review_flag = self._does_patch_have_acceptable_review_flag(patch_id) if self.verifycqplus else 1
+        if acceptable_review_flag != 1:
+            self.skip_build('Patch {} does not have acceptable review flag.'.format(patch_id))
+            return None
+
         if obsolete == -1 or review_denied == -1 or bug_closed == -1:
             self.finished(WARNINGS)
             self.setProperty('validated', False)
@@ -579,6 +609,7 @@
             self._addToLog('stdio', 'Patch is not marked r-.\n')
         if self.verifycqplus:
             self._addToLog('stdio', 'Patch is marked cq+.\n')
+            self._addToLog('stdio', 'Patch have acceptable review flag.\n')
         self.finished(SUCCESS)
         return None
 

Modified: trunk/Tools/ChangeLog (257283 => 257284)


--- trunk/Tools/ChangeLog	2020-02-25 00:48:50 UTC (rev 257283)
+++ trunk/Tools/ChangeLog	2020-02-25 00:55:54 UTC (rev 257284)
@@ -1,3 +1,16 @@
+2020-02-24  Aakash Jain  <aakash_j...@apple.com>
+
+        [ews] commit-queue should check that patch have appropriate review flag
+        https://bugs.webkit.org/show_bug.cgi?id=208138
+
+        Reviewed by Jonathan Bedard.
+
+        * BuildSlaveSupport/ews-build/steps.py:
+        (BugzillaMixin._is_patch_obsolete): Drive-by fix to set build properties for patch author, commiter and reviewer.
+        (BugzillaMixin._is_patch_cq_plus):
+        (BugzillaMixin._does_patch_have_acceptable_review_flag): Method to check if patch have r? or r- flag.
+        (ValidatePatch.start):
+
 2020-02-24  Jiewen Tan  <jiewen_...@apple.com>
 
         [WebAuthn] Implement SPI for the platform authenticator
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to