handle asynchronous test failures (#3164)
This commit is contained in:
@@ -55,8 +55,7 @@ process.nextTick(function run() {
|
|||||||
var elapsed = Date.now();
|
var elapsed = Date.now();
|
||||||
var timer;
|
var timer;
|
||||||
var done = function() {
|
var done = function() {
|
||||||
clearTimeout(timer);
|
reset();
|
||||||
done = function() {};
|
|
||||||
elapsed = Date.now() - elapsed;
|
elapsed = Date.now() - elapsed;
|
||||||
if (elapsed > task.limit) {
|
if (elapsed > task.limit) {
|
||||||
throw new Error("Timed out: " + elapsed + "ms > " + task.limit + "ms");
|
throw new Error("Timed out: " + elapsed + "ms > " + task.limit + "ms");
|
||||||
@@ -73,6 +72,7 @@ process.nextTick(function run() {
|
|||||||
}, limit);
|
}, limit);
|
||||||
};
|
};
|
||||||
task.timeout(task.limit);
|
task.timeout(task.limit);
|
||||||
|
process.on("uncaughtException", raise);
|
||||||
task.call(task, done);
|
task.call(task, done);
|
||||||
} else {
|
} else {
|
||||||
task.timeout = config.timeout;
|
task.timeout = config.timeout;
|
||||||
@@ -99,11 +99,16 @@ process.nextTick(function run() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function raise(err) {
|
function raise(err) {
|
||||||
clearTimeout(timer);
|
reset();
|
||||||
done = function() {};
|
|
||||||
task.titles.error = err;
|
task.titles.error = err;
|
||||||
errors.push(task.titles);
|
errors.push(task.titles);
|
||||||
log_titles(console.log, task.titles, red('\u00D7 '));
|
log_titles(console.log, task.titles, red('\u00D7 '));
|
||||||
process.nextTick(run);
|
process.nextTick(run);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function reset() {
|
||||||
|
clearTimeout(timer);
|
||||||
|
done = function() {};
|
||||||
|
process.removeListener("uncaughtException", raise);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user