mocha-annotated
Version:
Mocha but with tasks and feedback built into it!
64 lines (48 loc) • 1.28 kB
JavaScript
var Base = require('mocha/lib/reporters/base');
var _require = require('./helpers'),
clean = _require.clean;
/**
* Initialize a new `JSON` reporter.
*
* @api public
* @param {Runner} runner
*/
function AnnotatedJSONReporter(runner) {
var _this = this;
Base.call(this, runner);
this.tests = [];
this.pending = [];
this.failures = [];
this.passes = [];
runner.on('test end', function (test) {
_this.tests.push(test);
});
runner.on('pass', function (test) {
_this.passes.push(test);
});
runner.on('fail', function (test, err) {
// eslint-disable-next-line no-param-reassign
test.err = test.err !== undefined ? test.err : err;
_this.failures.push(test);
});
runner.on('pending', function (test) {
_this.pending.push(test);
});
runner.once('end', function () {
var obj = {
stats: _this.stats,
tests: _this.tests.map(clean),
pending: _this.pending.map(clean),
failures: _this.failures.map(clean),
passes: _this.passes.map(clean)
};
// eslint-disable-next-line no-param-reassign
runner.testResults = obj;
process.stdout.write(JSON.stringify(obj, null, 2));
});
}
/**
* Expose `AnnotatedJSONReporter`.
*/
module.exports = AnnotatedJSONReporter;
;