Merge pull request #49 from smikes/faster-python-runner

test262.py: only include helper scripts when needed
This commit is contained in:
Brian Terlson 2014-07-21 14:32:03 -07:00
commit 66366d6961
3 changed files with 20 additions and 14 deletions

View File

@ -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("<script type='text/javascript' src='harness/timer.js' defer>" + "</script>");
if(setTimeout === undefined && /\$DONE()/.test(code)){
idoc.writeln("<script type='text/javascript'>");
if(setTimeout === undefined && isAsyncTest(code)) {
idoc.writeln("<script type='text/javascript'>");
idoc.writeln(timerContents);
idoc.writeln("</script>");
}
@ -225,15 +228,15 @@ function BrowserRunner() {
idoc.writeln("<script type='text/javascript'>");
if(!/\$DONE()/.test(code))
//if the test is synchronous - call $DONE immediately
if (!isAsyncTest(code)) {
//if the test is synchronous - call $DONE immediately
idoc.writeln("if(typeof $DONE === 'function') $DONE()");
else{
//in case the test does not call $DONE asynchronously then
//bailout after 1 min or given bailout time by calling $DONE
} else {
//in case the test does not call $DONE asynchronously then
//bailout after 1 min or given bailout time by calling $DONE
var asyncval = parseInt(test.timeout);
var testTimeout = asyncval !== asyncval ? 2000 : asyncval;
idoc.writeln("setTimeout(function() {$ERROR(\" Test Timed Out at " + testTimeout +"\" )} ," + testTimeout + ")");
idoc.writeln("setTimeout(function() {$ERROR(\" Test Timed Out at " + testTimeout +"\" )} ," + testTimeout + ")");
}
idoc.writeln("</script>");
idoc.close();

View File

@ -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();

View File

@ -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'