Title: [288836] trunk/Tools
Revision
288836
Author
[email protected]
Date
2022-01-31 12:51:00 -0800 (Mon, 31 Jan 2022)

Log Message

[EWS] Revert pull request when retrying
https://bugs.webkit.org/show_bug.cgi?id=235825
<rdar://problem/88187688>

Reviewed by Aakash Jain.

* Tools/CISupport/ews-build/steps.py:
(UnApplyPatch.doStepIf): Only run if 'patch_id' is defined.
(UnApplyPatch.hideStepIf): Hide step if we aren't doing it.
(RevertPullRequestChanges): Clean checkout and checkout base hash if
'github.base.sha' is define.
(CompileWebKit.evaluateCommand): Add RevertPullRequestChanges step.
(RunJavaScriptCoreTests.evaluateCommand): Ditto.
(ReRunWebKitTests.evaluateCommand): Ditto.
(RunWebKitTestsRedTree.evaluateCommand): Ditto.
(RunWebKitTestsRepeatFailuresRedTree.evaluateCommand): Ditto.
(ReRunAPITests.evaluateCommand): Ditto.
* Tools/CISupport/ews-build/steps_unittest.py:

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

Modified Paths

Diff

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


--- trunk/Tools/CISupport/ews-build/steps.py	2022-01-31 20:43:07 UTC (rev 288835)
+++ trunk/Tools/CISupport/ews-build/steps.py	2022-01-31 20:51:00 UTC (rev 288836)
@@ -1462,7 +1462,39 @@
     name = 'unapply-patch'
     descriptionDone = ['Unapplied patch']
 
+    def doStepIf(self, step):
+        return self.getProperty('patch_id')
 
+    def hideStepIf(self, results, step):
+        return not self.doStepIf(step)
+
+
+class RevertPullRequestChanges(steps.ShellSequence):
+    name = 'revert-pull-request-changes'
+    description = ['revert-pull-request-changes running']
+    descriptionDone = ['Reverted pull request changes']
+    flunkOnFailure = True
+    haltOnFailure = True
+
+    def __init__(self, **kwargs):
+        super(RevertPullRequestChanges, self).__init__(timeout=5 * 60, logEnviron=False, **kwargs)
+
+    def run(self):
+        self.commands = []
+        for command in [
+            ['git', 'clean', '-f', '-d'],
+            ['git', 'checkout', self.getProperty('github.base.sha')],
+        ]:
+            self.commands.append(util.ShellArg(command=command, logname='stdio'))
+        return super(RevertPullRequestChanges, self).run()
+
+    def doStepIf(self, step):
+        return self.getProperty('github.number')
+
+    def hideStepIf(self, results, step):
+        return not self.doStepIf(step)
+
+
 class Trigger(trigger.Trigger):
     def __init__(self, schedulerNames, include_revision=True, triggers=None, patch=True, pull_request=False, **kwargs):
         self.include_revision = include_revision
@@ -1920,7 +1952,7 @@
 
     def evaluateCommand(self, cmd):
         if cmd.didFail():
-            steps_to_add = [UnApplyPatch(), ValidateChange(verifyBugClosed=False, addURLs=False)]
+            steps_to_add = [UnApplyPatch(), RevertPullRequestChanges(), ValidateChange(verifyBugClosed=False, addURLs=False)]
             platform = self.getProperty('platform')
             if platform == 'wpe':
                 steps_to_add.append(InstallWpeDependencies())
@@ -2197,6 +2229,7 @@
             self.build.buildFinished([message], SUCCESS)
         else:
             self.build.addStepsAfterCurrentStep([UnApplyPatch(),
+                                                RevertPullRequestChanges(),
                                                 ValidateChange(verifyBugClosed=False, addURLs=False),
                                                 CompileJSCWithoutPatch(),
                                                 ValidateChange(verifyBugClosed=False, addURLs=False),
@@ -2716,6 +2749,7 @@
                                                 UploadTestResults(identifier='rerun'),
                                                 ExtractTestResults(identifier='rerun'),
                                                 UnApplyPatch(),
+                                                RevertPullRequestChanges(),
                                                 ValidateChange(verifyBugClosed=False, addURLs=False),
                                                 CompileWebKitWithoutPatch(retry_build_on_failure=True),
                                                 ValidateChange(verifyBugClosed=False, addURLs=False),
@@ -3064,7 +3098,7 @@
             if retry_count < AnalyzeLayoutTestsResultsRedTree.MAX_RETRY:
                 next_steps.append(AnalyzeLayoutTestsResultsRedTree())
             else:
-                next_steps.extend([UnApplyPatch(), CompileWebKitWithoutPatch(retry_build_on_failure=True), ValidateChange(verifyBugClosed=False, addURLs=False), RunWebKitTestsWithoutPatchRedTree()])
+                next_steps.extend([UnApplyPatch(), RevertPullRequestChanges(), CompileWebKitWithoutPatch(retry_build_on_failure=True), ValidateChange(verifyBugClosed=False, addURLs=False), RunWebKitTestsWithoutPatchRedTree()])
         if next_steps:
             self.build.addStepsAfterCurrentStep(next_steps)
         return rc
@@ -3093,7 +3127,7 @@
         self.setProperty('with_patch_repeat_failures_retcode', rc)
         next_steps = [ArchiveTestResults(), UploadTestResults(identifier='repeat-failures'), ExtractTestResults(identifier='repeat-failures')]
         if with_patch_repeat_failures_results_nonflaky_failures or with_patch_repeat_failures_timedout:
-            next_steps.extend([ValidateChange(verifyBugClosed=False, addURLs=False), KillOldProcesses(), UnApplyPatch(), CompileWebKitWithoutPatch(retry_build_on_failure=True),
+            next_steps.extend([ValidateChange(verifyBugClosed=False, addURLs=False), KillOldProcesses(), UnApplyPatch(), RevertPullRequestChanges(), CompileWebKitWithoutPatch(retry_build_on_failure=True),
                                ValidateChange(verifyBugClosed=False, addURLs=False), RunWebKitTestsRepeatFailuresWithoutPatchRedTree()])
         else:
             next_steps.append(AnalyzeLayoutTestsResultsRedTree())
@@ -3512,7 +3546,7 @@
             self.build.results = SUCCESS
             self.build.buildFinished([message], SUCCESS)
         else:
-            steps_to_add = [UnApplyPatch(), ValidateChange(verifyBugClosed=False, addURLs=False)]
+            steps_to_add = [UnApplyPatch(), RevertPullRequestChanges(), ValidateChange(verifyBugClosed=False, addURLs=False)]
             platform = self.getProperty('platform')
             if platform == 'wpe':
                 steps_to_add.append(InstallWpeDependencies())

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


--- trunk/Tools/CISupport/ews-build/steps_unittest.py	2022-01-31 20:43:07 UTC (rev 288835)
+++ trunk/Tools/CISupport/ews-build/steps_unittest.py	2022-01-31 20:51:00 UTC (rev 288836)
@@ -49,7 +49,7 @@
                    FetchBranches, FindModifiedChangeLogs, FindModifiedLayoutTests, GitResetHard,
                    InstallBuiltProduct, InstallGtkDependencies, InstallWpeDependencies,
                    KillOldProcesses, PrintConfiguration, PushCommitToWebKitRepo, ReRunAPITests, ReRunWebKitPerlTests,
-                   ReRunWebKitTests, RunAPITests, RunAPITestsWithoutPatch, RunBindingsTests, RunBuildWebKitOrgUnitTests,
+                   ReRunWebKitTests, RevertPullRequestChanges, RunAPITests, RunAPITestsWithoutPatch, RunBindingsTests, RunBuildWebKitOrgUnitTests,
                    RunBuildbotCheckConfigForBuildWebKit, RunBuildbotCheckConfigForEWS, RunEWSUnitTests, RunResultsdbpyTests,
                    RunJavaScriptCoreTests, RunJSCTestsWithoutPatch, RunWebKit1Tests, RunWebKitPerlTests, RunWebKitPyPython2Tests,
                    RunWebKitPyPython3Tests, RunWebKitTests, RunWebKitTestsInStressMode, RunWebKitTestsInStressGuardmallocMode,
@@ -3144,6 +3144,7 @@
 
     def test_success(self):
         self.setupStep(UnApplyPatch())
+        self.setProperty('patch_id', 1234)
         self.expectHidden(False)
         self.expectRemoteCommands(
             ExpectShell(workdir='wkdir',
@@ -3157,6 +3158,7 @@
 
     def test_failure(self):
         self.setupStep(UnApplyPatch())
+        self.setProperty('patch_id', 1234)
         self.expectHidden(False)
         self.expectRemoteCommands(
             ExpectShell(workdir='wkdir',
@@ -3169,7 +3171,70 @@
         self.expectOutcome(result=FAILURE, state_string='Unapplied patch (failure)')
         return self.runStep()
 
+    def test_skip(self):
+        self.setupStep(UnApplyPatch())
+        self.expectHidden(True)
+        self.expectOutcome(result=SKIPPED, state_string='Unapplied patch (skipped)')
+        return self.runStep()
 
+
+class TestRevertPullRequestChanges(BuildStepMixinAdditions, unittest.TestCase):
+    def setUp(self):
+        self.longMessage = True
+        return self.setUpBuildStep()
+
+    def tearDown(self):
+        return self.tearDownBuildStep()
+
+    def test_success(self):
+        self.setupStep(RevertPullRequestChanges())
+        self.setProperty('github.base.sha', 'b2db8d1da7b74b5ddf075e301370e64d914eef7c')
+        self.setProperty('github.number', 1234)
+        self.expectHidden(False)
+        self.expectRemoteCommands(
+            ExpectShell(
+                workdir='wkdir',
+                logEnviron=False,
+                timeout=5 * 60,
+                command=['git', 'clean', '-f', '-d'],
+            ) + 0, ExpectShell(
+                workdir='wkdir',
+                logEnviron=False,
+                timeout=5 * 60,
+                command=['git', 'checkout', 'b2db8d1da7b74b5ddf075e301370e64d914eef7c'],
+            ) + 0,
+        )
+        self.expectOutcome(result=SUCCESS, state_string='Reverted pull request changes')
+        return self.runStep()
+
+    def test_failure(self):
+        self.setupStep(RevertPullRequestChanges())
+        self.setProperty('github.base.sha', 'b2db8d1da7b74b5ddf075e301370e64d914eef7c')
+        self.setProperty('github.number', 1234)
+        self.expectHidden(False)
+        self.expectRemoteCommands(
+            ExpectShell(
+                workdir='wkdir',
+                logEnviron=False,
+                timeout=5 * 60,
+                command=['git', 'clean', '-f', '-d'],
+            ) + 0, ExpectShell(
+                workdir='wkdir',
+                logEnviron=False,
+                timeout=5 * 60,
+                command=['git', 'checkout', 'b2db8d1da7b74b5ddf075e301370e64d914eef7c'],
+            ) + ExpectShell.log('stdio', stdout='Unexpected failure.') + 2,
+        )
+        self.expectOutcome(result=FAILURE, state_string='Reverted pull request changes (failure)')
+        return self.runStep()
+
+    def test_skip(self):
+        self.setupStep(RevertPullRequestChanges())
+        self.expectHidden(True)
+        self.expectOutcome(result=SKIPPED, state_string='Reverted pull request changes (skipped)')
+        return self.runStep()
+
+
 class TestCheckChangeRelevance(BuildStepMixinAdditions, unittest.TestCase):
     def setUp(self):
         self.longMessage = True

Modified: trunk/Tools/ChangeLog (288835 => 288836)


--- trunk/Tools/ChangeLog	2022-01-31 20:43:07 UTC (rev 288835)
+++ trunk/Tools/ChangeLog	2022-01-31 20:51:00 UTC (rev 288836)
@@ -1,3 +1,24 @@
+2022-01-31  Jonathan Bedard  <[email protected]>
+
+        [EWS] Revert pull request when retrying
+        https://bugs.webkit.org/show_bug.cgi?id=235825
+        <rdar://problem/88187688>
+
+        Reviewed by Aakash Jain.
+
+        * CISupport/ews-build/steps.py:
+        (UnApplyPatch.doStepIf): Only run if 'patch_id' is defined.
+        (UnApplyPatch.hideStepIf): Hide step if we aren't doing it.
+        (RevertPullRequestChanges): Clean checkout and checkout base hash if
+        'github.base.sha' is define.
+        (CompileWebKit.evaluateCommand): Add RevertPullRequestChanges step.
+        (RunJavaScriptCoreTests.evaluateCommand): Ditto.
+        (ReRunWebKitTests.evaluateCommand): Ditto.
+        (RunWebKitTestsRedTree.evaluateCommand): Ditto.
+        (RunWebKitTestsRepeatFailuresRedTree.evaluateCommand): Ditto.
+        (ReRunAPITests.evaluateCommand): Ditto.
+        * CISupport/ews-build/steps_unittest.py:
+
 2022-01-31  Myles C. Maxfield  <[email protected]>
 
         [Mac] Fix TestWebKitAPI build
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to