Modified: trunk/Tools/BuildSlaveSupport/ews-build/factories.py (233756 => 233757)
--- trunk/Tools/BuildSlaveSupport/ews-build/factories.py 2018-07-12 04:06:27 UTC (rev 233756)
+++ trunk/Tools/BuildSlaveSupport/ews-build/factories.py 2018-07-12 04:08:20 UTC (rev 233757)
@@ -71,7 +71,12 @@
def __init__(self, platform, configuration='release', architectures=None, additionalArguments=None, **kwargs):
Factory.__init__(self, platform, configuration, architectures, False, additionalArguments)
self.addStep(CompileJSCOnly())
+ self.addStep(UnApplyPatchIfRequired())
+ self.addStep(CompileJSCOnlyToT())
self.addStep(RunJavaScriptCoreTests())
+ self.addStep(ReRunJavaScriptCoreTests())
+ self.addStep(UnApplyPatchIfRequired())
+ self.addStep(RunJavaScriptCoreTestsToT())
class GTKFactory(Factory):
Modified: trunk/Tools/BuildSlaveSupport/ews-build/steps.py (233756 => 233757)
--- trunk/Tools/BuildSlaveSupport/ews-build/steps.py 2018-07-12 04:06:27 UTC (rev 233756)
+++ trunk/Tools/BuildSlaveSupport/ews-build/steps.py 2018-07-12 04:08:20 UTC (rev 233757)
@@ -73,7 +73,7 @@
super(UnApplyPatchIfRequired, self).__init__(alwaysUseLatest=True, **kwargs)
def doStepIf(self, step):
- return self.getProperty('patchFailedToBuild') or self.getProperty('patchFailedTests')
+ return self.getProperty('patchFailedToBuild') or self.getProperty('patchFailedJSCTests')
def hideStepIf(self, results, step):
return not self.doStepIf(step)
@@ -187,6 +187,16 @@
command = ["perl", "Tools/Scripts/build-jsc", WithProperties("--%(configuration)s")]
+class CompileJSCOnlyToT(CompileJSCOnly):
+ name = 'build-jsc-tot'
+
+ def doStepIf(self, step):
+ return self.getProperty('patchFailedToBuild')
+
+ def hideStepIf(self, results, step):
+ return not self.doStepIf(step)
+
+
class RunJavaScriptCoreTests(shell.Test):
name = 'jscore-test'
description = ['jscore-tests running']
@@ -200,7 +210,39 @@
appendCustomBuildFlags(self, self.getProperty('platform'), self.getProperty('fullPlatform'))
return shell.Test.start(self)
+ def evaluateCommand(self, cmd):
+ if cmd.didFail():
+ self.setProperty('patchFailedJSCTests', True)
+ return super(RunJavaScriptCoreTests, self).evaluateCommand(cmd)
+
+
+class ReRunJavaScriptCoreTests(RunJavaScriptCoreTests):
+ name = 'jscore-test-rerun'
+
+ def doStepIf(self, step):
+ return self.getProperty('patchFailedJSCTests')
+
+ def hideStepIf(self, results, step):
+ return not self.doStepIf(step)
+
+ def evaluateCommand(self, cmd):
+ self.setProperty('patchFailedJSCTests', cmd.didFail())
+ return super(RunJavaScriptCoreTests, self).evaluateCommand(cmd)
+
+
+class RunJavaScriptCoreTestsToT(RunJavaScriptCoreTests):
+ name = 'jscore-test-tot'
+ jsonFileName = 'jsc_results.json'
+ command = ['perl', 'Tools/Scripts/run-_javascript_core-tests', '--no-fail-fast', '--json-output={0}'.format(jsonFileName), WithProperties('--%(configuration)s')]
+
+ def doStepIf(self, step):
+ return self.getProperty('patchFailedJSCTests')
+
+ def hideStepIf(self, results, step):
+ return not self.doStepIf(step)
+
+
class CleanBuild(shell.Compile):
name = "delete-WebKitBuild-directory"
description = ["deleting WebKitBuild directory"]
Modified: trunk/Tools/BuildSlaveSupport/ews-build/steps_unittest.py (233756 => 233757)
--- trunk/Tools/BuildSlaveSupport/ews-build/steps_unittest.py 2018-07-12 04:06:27 UTC (rev 233756)
+++ trunk/Tools/BuildSlaveSupport/ews-build/steps_unittest.py 2018-07-12 04:08:20 UTC (rev 233757)
@@ -526,6 +526,52 @@
return self.runStep()
+class TestCompileJSCOnlyToT(BuildStepMixinAdditions, unittest.TestCase):
+ def setUp(self):
+ self.longMessage = True
+ return self.setUpBuildStep()
+
+ def tearDown(self):
+ return self.tearDownBuildStep()
+
+ def test_success(self):
+ self.setupStep(CompileJSCOnlyToT())
+ self.setProperty('fullPlatform', 'jsc-only')
+ self.setProperty('configuration', 'release')
+ self.setProperty('patchFailedToBuild', 'True')
+ self.expectRemoteCommands(
+ ExpectShell(workdir='wkdir',
+ command=['perl', 'Tools/Scripts/build-jsc', '--release'],
+ )
+ + 0,
+ )
+ self.expectOutcome(result=SUCCESS, state_string='compiled')
+ return self.runStep()
+
+ def test_failure(self):
+ self.setupStep(CompileJSCOnlyToT())
+ self.setProperty('fullPlatform', 'jsc-only')
+ self.setProperty('configuration', 'debug')
+ self.setProperty('patchFailedToBuild', 'True')
+ self.expectRemoteCommands(
+ ExpectShell(workdir='wkdir',
+ command=['perl', 'Tools/Scripts/build-jsc', '--debug'],
+ )
+ + ExpectShell.log('stdio', stdout='1 error generated.')
+ + 2,
+ )
+ self.expectOutcome(result=FAILURE, state_string='compiled (failure)')
+ return self.runStep()
+
+ def test_skip(self):
+ self.setupStep(CompileJSCOnlyToT())
+ self.setProperty('fullPlatform', 'jsc-only')
+ self.setProperty('configuration', 'debug')
+ self.expectHidden(True)
+ self.expectOutcome(result=SKIPPED, state_string='compiled (skipped)')
+ return self.runStep()
+
+
class TestRunJavaScriptCoreTests(BuildStepMixinAdditions, unittest.TestCase):
def setUp(self):
self.longMessage = True
@@ -565,5 +611,103 @@
return self.runStep()
+class TestReRunJavaScriptCoreTests(BuildStepMixinAdditions, unittest.TestCase):
+ def setUp(self):
+ self.longMessage = True
+ self.jsonFileName = 'jsc_results.json'
+ return self.setUpBuildStep()
+
+ def tearDown(self):
+ return self.tearDownBuildStep()
+
+ def test_success(self):
+ self.setupStep(ReRunJavaScriptCoreTests())
+ self.setProperty('fullPlatform', 'jsc-only')
+ self.setProperty('configuration', 'release')
+ self.setProperty('patchFailedJSCTests', 'True')
+ self.expectRemoteCommands(
+ ExpectShell(workdir='wkdir',
+ command=['perl', 'Tools/Scripts/run-_javascript_core-tests', '--no-build', '--no-fail-fast', '--json-output={0}'.format(self.jsonFileName), '--release'],
+ logfiles={'json': self.jsonFileName},
+ )
+ + 0,
+ )
+ self.expectOutcome(result=SUCCESS, state_string='jscore-tests')
+ return self.runStep()
+
+ def test_failure(self):
+ self.setupStep(ReRunJavaScriptCoreTests())
+ self.setProperty('fullPlatform', 'jsc-only')
+ self.setProperty('configuration', 'debug')
+ self.setProperty('patchFailedJSCTests', 'True')
+ self.expectRemoteCommands(
+ ExpectShell(workdir='wkdir',
+ command=['perl', 'Tools/Scripts/run-_javascript_core-tests', '--no-build', '--no-fail-fast', '--json-output={0}'.format(self.jsonFileName), '--debug'],
+ logfiles={'json': self.jsonFileName},
+ )
+ + ExpectShell.log('stdio', stdout='9 failures found.')
+ + 2,
+ )
+ self.expectOutcome(result=FAILURE, state_string='jscore-tests (failure)')
+ return self.runStep()
+
+ def test_skip(self):
+ self.setupStep(ReRunJavaScriptCoreTests())
+ self.setProperty('fullPlatform', 'jsc-only')
+ self.setProperty('configuration', 'debug')
+ self.expectHidden(True)
+ self.expectOutcome(result=SKIPPED, state_string='jscore-tests (skipped)')
+ return self.runStep()
+
+
+class TestRunJavaScriptCoreTestsToT(BuildStepMixinAdditions, unittest.TestCase):
+ def setUp(self):
+ self.longMessage = True
+ self.jsonFileName = 'jsc_results.json'
+ return self.setUpBuildStep()
+
+ def tearDown(self):
+ return self.tearDownBuildStep()
+
+ def test_success(self):
+ self.setupStep(RunJavaScriptCoreTestsToT())
+ self.setProperty('fullPlatform', 'jsc-only')
+ self.setProperty('configuration', 'release')
+ self.setProperty('patchFailedJSCTests', 'True')
+ self.expectRemoteCommands(
+ ExpectShell(workdir='wkdir',
+ command=['perl', 'Tools/Scripts/run-_javascript_core-tests', '--no-fail-fast', '--json-output={0}'.format(self.jsonFileName), '--release'],
+ logfiles={'json': self.jsonFileName},
+ )
+ + 0,
+ )
+ self.expectOutcome(result=SUCCESS, state_string='jscore-tests')
+ return self.runStep()
+
+ def test_failure(self):
+ self.setupStep(RunJavaScriptCoreTestsToT())
+ self.setProperty('fullPlatform', 'jsc-only')
+ self.setProperty('configuration', 'debug')
+ self.setProperty('patchFailedJSCTests', 'True')
+ self.expectRemoteCommands(
+ ExpectShell(workdir='wkdir',
+ command=['perl', 'Tools/Scripts/run-_javascript_core-tests', '--no-fail-fast', '--json-output={0}'.format(self.jsonFileName), '--debug'],
+ logfiles={'json': self.jsonFileName},
+ )
+ + ExpectShell.log('stdio', stdout='9 failures found.')
+ + 2,
+ )
+ self.expectOutcome(result=FAILURE, state_string='jscore-tests (failure)')
+ return self.runStep()
+
+ def test_skip(self):
+ self.setupStep(RunJavaScriptCoreTestsToT())
+ self.setProperty('fullPlatform', 'jsc-only')
+ self.setProperty('configuration', 'debug')
+ self.expectHidden(True)
+ self.expectOutcome(result=SKIPPED, state_string='jscore-tests (skipped)')
+ return self.runStep()
+
+
if __name__ == '__main__':
unittest.main()