mirror of
https://github.com/servo/servo.git
synced 2025-06-23 16:44:33 +01:00
49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
// Given an array of potentially asynchronous tests, this function will execute
|
|
// each in serial, ensuring that one and only one test is executing at a time.
|
|
//
|
|
// The test array should look like this:
|
|
//
|
|
//
|
|
// var tests = [
|
|
// [
|
|
// "Test description goes here.",
|
|
// function () {
|
|
// // Test code goes here. `this` is bound to the test object.
|
|
// }
|
|
// ],
|
|
// ...
|
|
// ];
|
|
//
|
|
// The |setup| and |teardown| arguments are functions which are executed before
|
|
// and after each test, respectively.
|
|
function executeTestsSerially(testList, setup, teardown) {
|
|
var tests = testList.map(function (t) {
|
|
return {
|
|
test: async_test(t[0]),
|
|
code: t[1]
|
|
};
|
|
});
|
|
|
|
var executeNextTest = function () {
|
|
var current = tests.shift();
|
|
if (current === undefined) {
|
|
return;
|
|
}
|
|
|
|
// Setup the test fixtures.
|
|
if (setup) {
|
|
setup();
|
|
}
|
|
|
|
// Bind a callback to tear down the test fixtures.
|
|
if (teardown) {
|
|
current.test.add_cleanup(teardown);
|
|
}
|
|
|
|
// Execute the test.
|
|
current.test.step(current.code);
|
|
};
|
|
|
|
add_result_callback(function () { setTimeout(executeNextTest, 0) });
|
|
executeNextTest();
|
|
}
|