From d4a3479a1ea95b073e7f7e16ef8e984714b0b395 Mon Sep 17 00:00:00 2001 From: Sam Mikes Date: Mon, 21 Jul 2014 15:15:04 +0100 Subject: [PATCH] test262.py: only include helper scripts when needed test262.py: only supply async helper scripts when test is async sth.js: factor out function isAsyncTest() timer.js: improve workaround for async tests when Promise is defined but setTimeout is noot timer.js emulates setTimeout using Promise by doing a busy loop that checks if `timeout` milliseconds have elapsed. Modified check to (timeLeft > 0) instead of (!timeLeft) to prevent infinite loop when check does not happen to run at precise millisecond timeout expires. Because test262.py did not support the $INCLUDE directive, some helper scripts were added to every test -- notably testIntl, timer, and donePrintHandle Now that $INCLUDE is supported, these can be dropped, speeding overall test run time --- test/harness/sth.js | 19 +++++++++++-------- test/harness/timer.js | 2 +- tools/packaging/test262.py | 13 ++++++++----- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/test/harness/sth.js b/test/harness/sth.js index cd05685e18..d100e160da 100644 --- a/test/harness/sth.js +++ b/test/harness/sth.js @@ -91,6 +91,9 @@ function BrowserRunner() { currentTest.code = codeString; } + function isAsyncTest(code) { + return /\$DONE()/.test(code)); + } /* Run the test. */ this.run = function (test, code) { @@ -208,8 +211,8 @@ function BrowserRunner() { //this is mainly applicable for consoles that do not have setTimeout support //idoc.writeln(""); - if(setTimeout === undefined && /\$DONE()/.test(code)){ - idoc.writeln(""); } @@ -225,15 +228,15 @@ function BrowserRunner() { idoc.writeln(""); idoc.close(); diff --git a/test/harness/timer.js b/test/harness/timer.js index 69762d83f5..4dddbb3a1b 100644 --- a/test/harness/timer.js +++ b/test/harness/timer.js @@ -12,7 +12,7 @@ if(Promise !== undefined && this.setTimeout === undefined) var end = start + delay; function check(){ var timeLeft = end - Date.now(); - if(timeLeft) + if(timeLeft > 0) p.then(check); else callback(); diff --git a/tools/packaging/test262.py b/tools/packaging/test262.py index 5a1917eaa8..1e7ad1689e 100755 --- a/tools/packaging/test262.py +++ b/tools/packaging/test262.py @@ -260,11 +260,14 @@ class TestCase(object): # "var testDescrip = " + str(self.testRecord) + ';\n\n' + \ source = self.suite.GetInclude("cth.js") + \ self.suite.GetInclude("sta.js") + \ - self.suite.GetInclude("ed.js") + \ - self.suite.GetInclude("testBuiltInObject.js") + \ - self.suite.GetInclude("testIntl.js") + \ - self.suite.GetInclude("timer.js") + \ - self.suite.GetInclude("doneprintHandle.js").replace('print', self.suite.print_handle) + \ + self.suite.GetInclude("ed.js") + + if self.IsAsyncTest(): + source = source + \ + self.suite.GetInclude("timer.js") + \ + self.suite.GetInclude("doneprintHandle.js").replace('print', self.suite.print_handle) + + source = source + \ self.GetAdditionalIncludes() + \ self.test + '\n'