diff --git a/lib/reporters/tap.js b/lib/reporters/tap.js index 2bcd995baa..f11dff5476 100644 --- a/lib/reporters/tap.js +++ b/lib/reporters/tap.js @@ -6,6 +6,7 @@ var Base = require('./base') , cursor = Base.cursor , color = Base.color; +var YAML = require('yamljs'); /** * Expose `TAP`. @@ -45,12 +46,13 @@ function TAP(runner) { runner.on('pass', function(test){ passes++; console.log('ok %d %s', n, title(test)); + writeDiagnostic(test); }); runner.on('fail', function(test, err){ failures++; console.log('not ok %d %s', n, title(test)); - if (err.stack) console.log(err.stack.replace(/^/gm, ' ')); + writeDiagnostic(test, err); }); runner.on('end', function(){ @@ -71,3 +73,20 @@ function TAP(runner) { function title(test) { return test.fullTitle().replace(/#/g, ''); } + +/** + * Output TAP diagnostic in YAML format + * @param {Object} test + * @param {Object} err + * @api private + */ +function writeDiagnostic(test, err){ + var obj = {}; + if (test.duration) obj.duration_ms = test.duration; + if (err && err.stack) obj.stacktrace = err.stack; + if (Object.keys(obj).length > 0) { + console.log(' ---'); + console.log(YAML.stringify(obj, 4).replace(/^/gm, ' ')); + console.log(' ...'); + } +} diff --git a/package.json b/package.json index 7352dee546..d8981532c3 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,8 @@ "diff": "1.0.7", "debug": "*", "mkdirp": "0.3.5", - "glob": "3.2.3" + "glob": "3.2.3", + "yamljs": "0.1.5" }, "devDependencies": { "should": ">= 2.0.x",