Title: [288479] trunk/Tools
Revision
288479
Author
[email protected]
Date
2022-01-24 16:19:18 -0800 (Mon, 24 Jan 2022)

Log Message

[EWS] Support pull request in AnaylzePatch
https://bugs.webkit.org/show_bug.cgi?id=235411
<rdar://problem/87839638>

Reviewed by Aakash Jain.

* CISupport/ews-build/factories.py:
(Factory.__init__): Rename AnalyzePatch to AnalyzeChange.
* CISupport/ews-build/factories_unittest.py:
(TestExpectedBuildSteps): Rename AnalyzePatch to AnalyzeChange.
* CISupport/ews-build/steps.py:
(AnalyzeChange): Renamed from AnalyzePatch.
(AnalyzeChange._get_patch): Create a parseable string including the files changed.
(CheckChangeRelevance): Renamed from CheckPatchRelevance.
(FindModifiedLayoutTests): Inherit from AnalyzeChange.
(AnalyzePatch): Renamed to AnalyzeChange.
(CheckPatchRelevance): Renamed to CheckChangeRelevance.
* CISupport/ews-build/steps_unittest.py:

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

Modified Paths

Diff

Modified: trunk/Tools/CISupport/ews-build/factories.py (288478 => 288479)


--- trunk/Tools/CISupport/ews-build/factories.py	2022-01-25 00:07:17 UTC (rev 288478)
+++ trunk/Tools/CISupport/ews-build/factories.py	2022-01-25 00:19:18 UTC (rev 288479)
@@ -24,7 +24,7 @@
 from buildbot.process import factory
 from buildbot.steps import trigger
 
-from steps import (ApplyPatch, ApplyWatchList, CheckOutPullRequest, CheckOutSource, CheckOutSpecificRevision, CheckPatchRelevance,
+from steps import (ApplyPatch, ApplyWatchList, CheckOutPullRequest, CheckOutSource, CheckOutSpecificRevision, CheckChangeRelevance,
                    CheckPatchStatusOnEWSQueues, CheckStyle, CleanGitRepo, CompileJSC, CompileWebKit, ConfigureBuild, CreateLocalGITCommit,
                    DownloadBuiltProduct, ExtractBuiltProduct, FetchBranches, FindModifiedChangeLogs, FindModifiedLayoutTests,
                    InstallGtkDependencies, InstallWpeDependencies, KillOldProcesses, PrintConfiguration, PushCommitToWebKitRepo,
@@ -43,7 +43,7 @@
         factory.BuildFactory.__init__(self)
         self.addStep(ConfigureBuild(platform=platform, configuration=configuration, architectures=architectures, buildOnly=buildOnly, triggers=triggers, triggered_by=triggered_by, remotes=remotes, additionalArguments=additionalArguments))
         if checkRelevance:
-            self.addStep(CheckPatchRelevance())
+            self.addStep(CheckChangeRelevance())
         if self.findModifiedLayoutTests:
             self.addStep(FindModifiedLayoutTests())
         self.addStep(ValidateChange())

Modified: trunk/Tools/CISupport/ews-build/factories_unittest.py (288478 => 288479)


--- trunk/Tools/CISupport/ews-build/factories_unittest.py	2022-01-25 00:07:17 UTC (rev 288478)
+++ trunk/Tools/CISupport/ews-build/factories_unittest.py	2022-01-25 00:19:18 UTC (rev 288479)
@@ -142,7 +142,7 @@
         ],
         'macOS-AppleSilicon-Big-Sur-Debug-Build-EWS': [
             'configure-build',
-            'check-patch-relevance',
+            'check-change-relevance',
             'validate-change',
             'configuration',
             'clean-up-git-repo',
@@ -192,7 +192,7 @@
         ],
         'macOS-Catalina-Release-WK1-Tests-EWS': [
             'configure-build',
-            'check-patch-relevance',
+            'check-change-relevance',
             'validate-change',
             'configuration',
             'clean-up-git-repo',
@@ -269,7 +269,7 @@
         ],
         'macOS-Catalina-Debug-WK1-Tests-EWS': [
             'configure-build',
-            'check-patch-relevance',
+            'check-change-relevance',
             'validate-change',
             'configuration',
             'clean-up-git-repo',
@@ -347,7 +347,7 @@
         ],
         'Windows-EWS': [
             'configure-build',
-            'check-patch-relevance',
+            'check-change-relevance',
             'validate-change',
             'configuration',
             'clean-up-git-repo',
@@ -394,7 +394,7 @@
         ],
         'JSC-Tests-EWS': [
             'configure-build',
-            'check-patch-relevance',
+            'check-change-relevance',
             'validate-change',
             'configuration',
             'clean-up-git-repo',
@@ -410,7 +410,7 @@
         ],
         'JSC-MIPSEL-32bits-Build-EWS': [
             'configure-build',
-            'check-patch-relevance',
+            'check-change-relevance',
             'validate-change',
             'configuration',
             'clean-up-git-repo',
@@ -425,7 +425,7 @@
         ],
         'JSC-MIPSEL-32bits-Tests-EWS': [
             'configure-build',
-            'check-patch-relevance',
+            'check-change-relevance',
             'validate-change',
             'configuration',
             'clean-up-git-repo',
@@ -442,7 +442,7 @@
         ],
         'JSC-ARMv7-32bits-Build-EWS': [
             'configure-build',
-            'check-patch-relevance',
+            'check-change-relevance',
             'validate-change',
             'configuration',
             'clean-up-git-repo',
@@ -457,7 +457,7 @@
         ],
         'JSC-ARMv7-32bits-Tests-EWS': [
             'configure-build',
-            'check-patch-relevance',
+            'check-change-relevance',
             'validate-change',
             'configuration',
             'clean-up-git-repo',
@@ -474,7 +474,7 @@
         ],
         'JSC-i386-32bits-EWS': [
             'configure-build',
-            'check-patch-relevance',
+            'check-change-relevance',
             'validate-change',
             'configuration',
             'clean-up-git-repo',
@@ -489,7 +489,7 @@
         ],
         'Bindings-Tests-EWS': [
             'configure-build',
-            'check-patch-relevance',
+            'check-change-relevance',
             'validate-change',
             'configuration',
             'clean-up-git-repo',
@@ -503,7 +503,7 @@
         ],
         'WebKitPy-Tests-EWS': [
             'configure-build',
-            'check-patch-relevance',
+            'check-change-relevance',
             'validate-change',
             'configuration',
             'clean-up-git-repo',
@@ -581,7 +581,7 @@
         ],
         'Services-EWS': [
             'configure-build',
-            'check-patch-relevance',
+            'check-change-relevance',
             'validate-change',
             'configuration',
             'clean-up-git-repo',

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


--- trunk/Tools/CISupport/ews-build/steps.py	2022-01-25 00:07:17 UTC (rev 288478)
+++ trunk/Tools/CISupport/ews-build/steps.py	2022-01-25 00:19:18 UTC (rev 288479)
@@ -648,15 +648,17 @@
         return super(CheckOutPullRequest, self).getResultSummary()
 
 
-class AnalyzePatch(buildstep.BuildStep):
+class AnalyzeChange(buildstep.BuildStep):
     flunkOnFailure = True
     haltOnFailure = True
 
     def _get_patch(self):
         sourcestamp = self.build.getSourceStamp(self.getProperty('codebase', ''))
-        if not sourcestamp or not sourcestamp.patch:
-            return None
-        return sourcestamp.patch[1]
+        if sourcestamp and sourcestamp.changes:
+            return '\n'.join(sourcestamp.changes[0].files)
+        if sourcestamp and sourcestamp.patch:
+            return sourcestamp.patch[1]
+        return None
 
     @defer.inlineCallbacks
     def _addToLog(self, logName, message):
@@ -666,18 +668,24 @@
             log = yield self.addLog(logName)
         log.addStdout(message)
 
+    @property
+    def change_type(self):
+        if self.getProperty('github.number', False):
+            return 'Pull request'
+        return 'Patch'
+
     def getResultSummary(self):
         if self.results in [FAILURE, SKIPPED]:
-            return {'step': 'Patch doesn\'t have relevant changes'}
+            return {'step': '{} doesn\'t have relevant changes'.format(self.change_type)}
         if self.results == SUCCESS:
-            return {'step': 'Patch contains relevant changes'}
+            return {'step': '{} contains relevant changes'.format(self.change_type)}
         return buildstep.BuildStep.getResultSummary(self)
 
 
-class CheckPatchRelevance(AnalyzePatch):
-    name = 'check-patch-relevance'
-    description = ['check-patch-relevance running']
-    descriptionDone = ['Patch contains relevant changes']
+class CheckChangeRelevance(AnalyzeChange):
+    name = 'check-change-relevance'
+    description = ['check-change-relevance running']
+    descriptionDone = ['Change contains relevant changes']
     MAX_LINE_SIZE = 250
 
     bindings_path_regexes = [
@@ -767,19 +775,23 @@
             return None
 
         if self._patch_is_relevant(patch, self.getProperty('buildername', '')):
-            self._addToLog('stdio', 'This patch contains relevant changes.')
+            self._addToLog('stdio', 'This {} contains relevant changes.'.format(self.change_type.lower()))
             self.finished(SUCCESS)
             return None
 
-        self._addToLog('stdio', 'This patch does not have relevant changes.')
+        self._addToLog('stdio', 'This {} does not have relevant changes.'.format(self.change_type.lower()))
         self.finished(FAILURE)
         self.build.results = SKIPPED
-        self.build.buildFinished(['Patch {} doesn\'t have relevant changes'.format(self.getProperty('patch_id', ''))], SKIPPED)
+        self.build.buildFinished(['{} {} doesn\'t have relevant changes'.format(
+            self.change_type,
+            self.getProperty('patch_id', '') or self.getProperty('github.number', ''),
+        )], SKIPPED)
         return None
 
 
-class FindModifiedLayoutTests(AnalyzePatch):
+class FindModifiedLayoutTests(AnalyzeChange):
     name = 'find-modified-layout-tests'
+    # FIXME: This regex won't work for pull-requests
     RE_LAYOUT_TEST = br'^(\+\+\+).*(LayoutTests.*\.html)'
     DIRECTORIES_TO_IGNORE = ['reference', 'reftest', 'resources', 'support', 'script-tests', 'tools']
     SUFFIXES_TO_IGNORE = ['-expected', '-expected-mismatch', '-ref', '-notref']
@@ -810,16 +822,19 @@
         tests = self.find_test_names_from_patch(patch)
 
         if tests:
-            self._addToLog('stdio', 'This patch modifies following tests: {}'.format(tests))
+            self._addToLog('stdio', 'This change modifies following tests: {}'.format(tests))
             self.setProperty('modified_tests', tests)
             self.finished(SUCCESS)
             return None
 
-        self._addToLog('stdio', 'This patch does not modify any layout tests')
+        self._addToLog('stdio', 'This change does not modify any layout tests')
         self.finished(SKIPPED)
         if self.skipBuildIfNoResult:
             self.build.results = SKIPPED
-            self.build.buildFinished(['Patch {} doesn\'t have relevant changes'.format(self.getProperty('patch_id', ''))], SKIPPED)
+            self.build.buildFinished(['{} {} doesn\'t have relevant changes'.format(
+                self.change_type,
+                self.getProperty('patch_id', '') or self.getProperty('github.number', ''),
+            )], SKIPPED)
         return None
 
 

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


--- trunk/Tools/CISupport/ews-build/steps_unittest.py	2022-01-25 00:07:17 UTC (rev 288478)
+++ trunk/Tools/CISupport/ews-build/steps_unittest.py	2022-01-25 00:19:18 UTC (rev 288479)
@@ -42,7 +42,7 @@
 
 from steps import (AnalyzeAPITestsResults, AnalyzeCompileWebKitResults, AnalyzeJSCTestsResults,
                    AnalyzeLayoutTestsResults, ApplyPatch, ApplyWatchList, ArchiveBuiltProduct, ArchiveTestResults,
-                   CheckOutPullRequest, CheckOutSource, CheckOutSpecificRevision, CheckPatchRelevance, CheckPatchStatusOnEWSQueues, CheckStyle,
+                   CheckOutPullRequest, CheckOutSource, CheckOutSpecificRevision, CheckChangeRelevance, CheckPatchStatusOnEWSQueues, CheckStyle,
                    CleanBuild, CleanUpGitIndexLock, CleanGitRepo, CleanWorkingDirectory, CompileJSC, CompileJSCWithoutPatch,
                    CompileWebKit, CompileWebKitWithoutPatch, ConfigureBuild, ConfigureBuild, Contributors, CreateLocalGITCommit,
                    DownloadBuiltProduct, DownloadBuiltProductFromMaster, EWS_BUILD_HOSTNAME, ExtractBuiltProduct, ExtractTestResults,
@@ -3189,7 +3189,7 @@
         return self.runStep()
 
 
-class TestCheckPatchRelevance(BuildStepMixinAdditions, unittest.TestCase):
+class TestCheckChangeRelevance(BuildStepMixinAdditions, unittest.TestCase):
     def setUp(self):
         self.longMessage = True
         return self.setUpBuildStep()
@@ -3205,12 +3205,12 @@
                       'Tools/Scripts/update-_javascript_core-test-results', 'Tools/Scripts/webkitdirs.pm',
                       'Source/cmake/OptionsJSCOnly.cmake']
 
-        self.setupStep(CheckPatchRelevance())
+        self.setupStep(CheckChangeRelevance())
         self.setProperty('buildername', 'JSC-Tests-EWS')
-        self.assertEqual(CheckPatchRelevance.haltOnFailure, True)
-        self.assertEqual(CheckPatchRelevance.flunkOnFailure, True)
+        self.assertEqual(CheckChangeRelevance.haltOnFailure, True)
+        self.assertEqual(CheckChangeRelevance.flunkOnFailure, True)
         for file_name in file_names:
-            CheckPatchRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
+            CheckChangeRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
             self.expectOutcome(result=SUCCESS, state_string='Patch contains relevant changes')
             rc = self.runStep()
         return rc
@@ -3219,10 +3219,10 @@
         file_names = ['Source/WebKitLegacy', 'Source/WebCore', 'Source/WebInspectorUI', 'Source/WebDriver', 'Source/WTF',
                       'Source/bmalloc', 'Source/_javascript_Core', 'Source/ThirdParty', 'LayoutTests', 'Tools']
 
-        self.setupStep(CheckPatchRelevance())
+        self.setupStep(CheckChangeRelevance())
         self.setProperty('buildername', 'macOS-Catalina-Release-WK1-Tests-EWS')
         for file_name in file_names:
-            CheckPatchRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
+            CheckChangeRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
             self.expectOutcome(result=SUCCESS, state_string='Patch contains relevant changes')
             rc = self.runStep()
         return rc
@@ -3229,17 +3229,17 @@
 
     def test_relevant_bigsur_builder_patch(self):
         file_names = ['Source/xyz', 'Tools/abc']
-        self.setupStep(CheckPatchRelevance())
+        self.setupStep(CheckChangeRelevance())
         self.setProperty('buildername', 'macOS-BigSur-Release-Build-EWS')
         for file_name in file_names:
-            CheckPatchRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
+            CheckChangeRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
             self.expectOutcome(result=SUCCESS, state_string='Patch contains relevant changes')
             rc = self.runStep()
         return rc
 
     def test_relevant_windows_wk1_patch(self):
-        CheckPatchRelevance._get_patch = lambda x: b'Sample patch; file: Source/WebKitLegacy'
-        self.setupStep(CheckPatchRelevance())
+        CheckChangeRelevance._get_patch = lambda x: b'Sample patch; file: Source/WebKitLegacy'
+        self.setupStep(CheckChangeRelevance())
         self.setProperty('buildername', 'Windows-EWS')
         self.expectOutcome(result=SUCCESS, state_string='Patch contains relevant changes')
         return self.runStep()
@@ -3246,10 +3246,10 @@
 
     def test_relevant_webkitpy_patch(self):
         file_names = ['Tools/Scripts/webkitpy', 'Tools/Scripts/libraries', 'Tools/Scripts/commit-log-editor']
-        self.setupStep(CheckPatchRelevance())
+        self.setupStep(CheckChangeRelevance())
         self.setProperty('buildername', 'WebKitPy-Tests-EWS')
         for file_name in file_names:
-            CheckPatchRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
+            CheckChangeRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
             self.expectOutcome(result=SUCCESS, state_string='Patch contains relevant changes')
             rc = self.runStep()
         return rc
@@ -3257,32 +3257,55 @@
     def test_relevant_services_patch(self):
         file_names = ['Tools/CISupport/build-webkit-org', 'Tools/CISupport/ews-build', 'Tools/CISupport/Shared',
                       'Tools/Scripts/libraries/resultsdbpy', 'Tools/Scripts/libraries/webkitcorepy', 'Tools/Scripts/libraries/webkitscmpy']
-        self.setupStep(CheckPatchRelevance())
+        self.setupStep(CheckChangeRelevance())
         self.setProperty('buildername', 'Services-EWS')
         for file_name in file_names:
-            CheckPatchRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
+            CheckChangeRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
             self.expectOutcome(result=SUCCESS, state_string='Patch contains relevant changes')
             rc = self.runStep()
         return rc
 
+    def test_relevant_services_pull_request(self):
+        file_names = ['Tools/CISupport/build-webkit-org', 'Tools/CISupport/ews-build', 'Tools/CISupport/Shared',
+                      'Tools/Scripts/libraries/resultsdbpy', 'Tools/Scripts/libraries/webkitcorepy', 'Tools/Scripts/libraries/webkitscmpy']
+        self.setupStep(CheckChangeRelevance())
+        self.setProperty('buildername', 'Services-EWS')
+        self.setProperty('github.number', 1234)
+        for file_name in file_names:
+            CheckChangeRelevance._get_patch = lambda x: file_name
+            self.expectOutcome(result=SUCCESS, state_string='Pull request contains relevant changes')
+            rc = self.runStep()
+        return rc
+
     def test_relevant_bindings_tests_patch(self):
         file_names = ['Source/WebCore', 'Tools']
-        self.setupStep(CheckPatchRelevance())
+        self.setupStep(CheckChangeRelevance())
         self.setProperty('buildername', 'Bindings-Tests-EWS')
         for file_name in file_names:
-            CheckPatchRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
+            CheckChangeRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
             self.expectOutcome(result=SUCCESS, state_string='Patch contains relevant changes')
             rc = self.runStep()
         return rc
 
+    def test_relevant_bindings_tests_pull_request(self):
+        file_names = ['Source/WebCore', 'Tools']
+        self.setupStep(CheckChangeRelevance())
+        self.setProperty('buildername', 'Bindings-Tests-EWS')
+        self.setProperty('github.number', 1234)
+        for file_name in file_names:
+            CheckChangeRelevance._get_patch = lambda x: file_name
+            self.expectOutcome(result=SUCCESS, state_string='Pull request contains relevant changes')
+            rc = self.runStep()
+        return rc
+
     def test_queues_without_relevance_info(self):
-        CheckPatchRelevance._get_patch = lambda x: 'Sample patch'
+        CheckChangeRelevance._get_patch = lambda x: 'Sample patch'
         queues = ['Commit-Queue', 'Style-EWS', 'Apply-WatchList-EWS', 'GTK-Build-EWS', 'GTK-WK2-Tests-EWS',
                   'iOS-13-Build-EWS', 'iOS-13-Simulator-Build-EWS', 'iOS-13-Simulator-WK2-Tests-EWS',
                   'macOS-Catalina-Release-Build-EWS', 'macOS-Catalina-Release-WK2-Tests-EWS', 'macOS-Catalina-Debug-Build-EWS',
                   'WinCairo-EWS', 'WPE-EWS', 'WebKitPerl-Tests-EWS']
         for queue in queues:
-            self.setupStep(CheckPatchRelevance())
+            self.setupStep(CheckChangeRelevance())
             self.setProperty('buildername', queue)
             self.expectOutcome(result=SUCCESS, state_string='Patch contains relevant changes')
             rc = self.runStep()
@@ -3289,17 +3312,29 @@
         return rc
 
     def test_non_relevant_patch_on_various_queues(self):
-        CheckPatchRelevance._get_patch = lambda x: 'Sample patch'
+        CheckChangeRelevance._get_patch = lambda x: 'Sample patch'
         queues = ['Bindings-Tests-EWS', 'JSC-Tests-EWS', 'macOS-BigSur-Release-Build-EWS',
                   'macOS-Catalina-Debug-WK1-Tests-EWS', 'Services-EWS', 'WebKitPy-Tests-EWS']
         for queue in queues:
-            self.setupStep(CheckPatchRelevance())
+            self.setupStep(CheckChangeRelevance())
             self.setProperty('buildername', queue)
             self.expectOutcome(result=FAILURE, state_string='Patch doesn\'t have relevant changes')
             rc = self.runStep()
         return rc
 
+    def test_non_relevant_pull_request_on_various_queues(self):
+        CheckChangeRelevance._get_patch = lambda x: '\n'
+        queues = ['Bindings-Tests-EWS', 'JSC-Tests-EWS', 'macOS-BigSur-Release-Build-EWS',
+                  'macOS-Catalina-Debug-WK1-Tests-EWS', 'Services-EWS', 'WebKitPy-Tests-EWS']
+        for queue in queues:
+            self.setupStep(CheckChangeRelevance())
+            self.setProperty('buildername', queue)
+            self.setProperty('github.number', 1234)
+            self.expectOutcome(result=FAILURE, state_string='Pull request doesn\'t have relevant changes')
+            rc = self.runStep()
+        return rc
 
+
 class TestFindModifiedLayoutTests(BuildStepMixinAdditions, unittest.TestCase):
     def setUp(self):
         self.longMessage = True

Modified: trunk/Tools/ChangeLog (288478 => 288479)


--- trunk/Tools/ChangeLog	2022-01-25 00:07:17 UTC (rev 288478)
+++ trunk/Tools/ChangeLog	2022-01-25 00:19:18 UTC (rev 288479)
@@ -1,3 +1,24 @@
+2022-01-20  Jonathan Bedard  <[email protected]>
+
+        [EWS] Support pull request in AnaylzePatch
+        https://bugs.webkit.org/show_bug.cgi?id=235411
+        <rdar://problem/87839638>
+
+        Reviewed by Aakash Jain.
+
+        * CISupport/ews-build/factories.py:
+        (Factory.__init__): Rename AnalyzePatch to AnalyzeChange.
+        * CISupport/ews-build/factories_unittest.py:
+        (TestExpectedBuildSteps): Rename AnalyzePatch to AnalyzeChange.
+        * CISupport/ews-build/steps.py:
+        (AnalyzeChange): Renamed from AnalyzePatch.
+        (AnalyzeChange._get_patch): Create a parseable string including the files changed.
+        (CheckChangeRelevance): Renamed from CheckPatchRelevance.
+        (FindModifiedLayoutTests): Inherit from AnalyzeChange.
+        (AnalyzePatch): Renamed to AnalyzeChange.
+        (CheckPatchRelevance): Renamed to CheckChangeRelevance.
+        * CISupport/ews-build/steps_unittest.py:
+
 2022-01-24  Sihui Liu  <[email protected]>
 
         Regression (r286936): SessionStorage data is not cleared when deleting website data by modification time
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to