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