mirror of
https://github.com/valitydev/thrift.git
synced 2024-11-06 18:35:19 +00:00
4646a3557b
Trivially change file mode from 755 to 644 for files in git that shouldn't be marked as executable. These were probably marked as executable due to some contributors developing on Windows using a filesystem that doesn't support POSIX file modes, or aggressively marks everything as executable.
92 lines
3.5 KiB
JavaScript
92 lines
3.5 KiB
JavaScript
/*jshint evil:true*/
|
|
|
|
/* This file is only used by the test suite.
|
|
*
|
|
* Origin: https://github.com/ariya/phantomjs/blob/master/examples/run-qunit.js
|
|
* License: https://github.com/ariya/phantomjs/blob/master/LICENSE.BSD
|
|
*
|
|
* Inclusion into Apache products is allowed according to http://www.apache.org/legal/3party.html
|
|
*/
|
|
|
|
var system = require('system');
|
|
|
|
|
|
/**
|
|
* Wait until the test condition is true or a timeout occurs. Useful for waiting
|
|
* on a server response or for a ui change (fadeIn, etc.) to occur.
|
|
*
|
|
* @param testFx javascript condition that evaluates to a boolean,
|
|
* it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or
|
|
* as a callback function.
|
|
* @param onReady what to do when testFx condition is fulfilled,
|
|
* it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or
|
|
* as a callback function.
|
|
* @param timeOutMillis the max amount of time to wait. If not specified, 3 sec is used.
|
|
*/
|
|
function waitFor(testFx, onReady, timeOutMillis) {
|
|
var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 3001, //< Default Max Timout is 3s
|
|
start = new Date().getTime(),
|
|
condition = false,
|
|
interval = setInterval(function() {
|
|
if ((new Date().getTime() - start < maxtimeOutMillis) && !condition) {
|
|
// If not time-out yet and condition not yet fulfilled
|
|
condition = (typeof(testFx) === 'string' ? eval(testFx) : testFx()); //< defensive code
|
|
} else {
|
|
if (!condition) {
|
|
// If condition still not fulfilled (timeout but condition is 'false')
|
|
console.log("'waitFor()' timeout");
|
|
phantom.exit(1);
|
|
} else {
|
|
// Condition fulfilled (timeout and/or condition is 'true')
|
|
console.log("'waitFor()' finished in " + (new Date().getTime() - start) + 'ms.');
|
|
if (typeof(onReady) === 'string') {
|
|
eval(onReady);
|
|
} else {
|
|
onReady(); //< Do what it's supposed to do once the condition is fulfilled
|
|
}
|
|
clearInterval(interval); //< Stop this interval
|
|
}
|
|
}
|
|
}, 100); //< repeat check every 250ms
|
|
}
|
|
|
|
|
|
if (system.args.length === 1 || system.args.length > 3) {
|
|
console.log('Usage: phantomjs phantomjs-qunit.js URL');
|
|
phantom.exit(1);
|
|
}
|
|
|
|
var page = new WebPage();
|
|
|
|
// Route "console.log()" calls from within the Page context to the main Phantom context (i.e. current "this")
|
|
page.onConsoleMessage = function(msg) {
|
|
console.log(msg);
|
|
};
|
|
|
|
page.open(system.args[1], function(status) {
|
|
if (status !== 'success') {
|
|
console.log('Unable to access network');
|
|
phantom.exit(1);
|
|
} else {
|
|
waitFor(function() {
|
|
return page.evaluate(function() {
|
|
var el = document.getElementById('qunit-testresult');
|
|
if (el && el.innerText.match('completed')) {
|
|
return true;
|
|
}
|
|
return false;
|
|
});
|
|
}, function() {
|
|
var failedNum = page.evaluate(function() {
|
|
var el = document.getElementById('qunit-testresult');
|
|
console.log(el.innerText);
|
|
try {
|
|
return el.getElementsByClassName('failed')[0].innerHTML;
|
|
} catch (e) { }
|
|
return 10000;
|
|
});
|
|
phantom.exit((parseInt(failedNum, 10) > 0) ? 1 : 0);
|
|
});
|
|
}
|
|
});
|