64 lines
1.0 KiB
JavaScript
64 lines
1.0 KiB
JavaScript
|
|
/**
|
|
* Module dependencies.
|
|
*/
|
|
|
|
var Base = require('./base')
|
|
, cursor = Base.cursor
|
|
, color = Base.color;
|
|
|
|
/**
|
|
* Expose `TAP`.
|
|
*/
|
|
|
|
exports = module.exports = TAP;
|
|
|
|
/**
|
|
* Initialize a new `TAP` reporter.
|
|
*
|
|
* @param {Runner} runner
|
|
* @api public
|
|
*/
|
|
|
|
function TAP(runner) {
|
|
Base.call(this, runner);
|
|
|
|
var self = this
|
|
, stats = this.stats
|
|
, total = runner.total
|
|
, n = 1;
|
|
|
|
runner.on('start', function(){
|
|
console.log('%d..%d', 1, total);
|
|
});
|
|
|
|
runner.on('test end', function(){
|
|
++n;
|
|
});
|
|
|
|
runner.on('pending', function(test){
|
|
console.log('ok %d %s # SKIP -', n, title(test));
|
|
});
|
|
|
|
runner.on('pass', function(test){
|
|
console.log('ok %d %s', n, title(test));
|
|
});
|
|
|
|
runner.on('fail', function(test, err){
|
|
console.log('not ok %d %s', n, title(test));
|
|
console.log(err.stack.replace(/^/gm, ' '));
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Return a TAP-safe title of `test`
|
|
*
|
|
* @param {Object} test
|
|
* @return {String}
|
|
* @api private
|
|
*/
|
|
|
|
function title(test) {
|
|
return test.fullTitle().replace(/#/g, '');
|
|
}
|