You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

61 lines
1.3 KiB

'use strict';
var setImmediate = require('set-immediate-shim');
var hasFlag = require('has-flag');
var serializeError = require('serialize-error');
var Runner = require('./lib/runner');
var runner = new Runner();
// if fail-fast is enabled, use this variable to detect,
// that no more tests should be logged
var isFailed = false;
Error.stackTraceLimit = Infinity;
function test(err, title, duration) {
if (isFailed) {
return;
}
process.send({
name: 'test',
data: {
err: err ? serializeError(err) : {},
title: title,
duration: duration
}
});
if (err && hasFlag('fail-fast')) {
isFailed = true;
exit();
}
}
function exit() {
// serialize errors
runner.results.forEach(function (result) {
if (result.error) {
result.error = serializeError(result.error);
}
});
process.send({
name: 'results',
data: {
stats: runner.stats,
tests: runner.results
}
});
}
setImmediate(function () {
runner.on('test', test);
runner.run().then(exit);
});
module.exports = runner.addTest.bind(runner);
module.exports.serial = runner.addSerialTest.bind(runner);
module.exports.before = runner.addBeforeHook.bind(runner);
module.exports.after = runner.addAfterHook.bind(runner);
module.exports.beforeEach = runner.addBeforeEachHook.bind(runner);
module.exports.afterEach = runner.addAfterEachHook.bind(runner);