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.
 

71 lines
1.3 KiB

'use strict';
var chalk = require('chalk');
var figures = require('figures');
var Squeak = require('squeak');
var plur = require('plur');
var Runner = require('./lib/runner');
var log = new Squeak({separator: ' '});
var runner = new Runner();
log.type('success', {
color: 'green',
prefix: figures.tick
});
log.type('error', {
color: 'red',
prefix: figures.cross
});
function test(err, title) {
if (err) {
log.error(title, chalk.red(err.message));
return;
}
log.success(title);
}
function stack(results) {
var i = 0;
results.forEach(function (result) {
if (!result.error) {
return;
}
i++;
log.writelpad(chalk.red(i + '.', result.title));
log.writelpad(chalk.red(result.error.stack));
log.write();
});
}
function exit(stats, results) {
if (stats.testCount > 0) {
log.write();
}
if (stats.failCount === 0) {
log.writelpad(chalk.green(stats.passCount, plur('test', stats.passCount), 'passed'));
} else {
log.writelpad(chalk.red(stats.failCount, plur('test', stats.failCount), 'failed'));
}
log.write();
if (stats.failCount > 0) {
stack(results);
}
process.exit(stats.failCount > 0 ? 1 : 0);
}
setImmediate(function () {
runner.on('test', test);
runner.run(exit);
});
module.exports = runner.addTest.bind(runner);
module.exports.serial = runner.addSerialTest.bind(runner);