diff --git a/Makefile b/Makefile index 7cf603b..631b008 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: pass fail test +.PHONY: pass fail mix test TAP = ./node_modules/tape/bin/tape MIN = ./bin/tap-difflet @@ -9,4 +9,10 @@ pass: fail: @$(TAP) test/fail.js | $(MIN) +mix: + @$(TAP) test/mix.js | $(MIN) + +mixp: + @$(TAP) test/mix.js | $(MIN) -p + test: pass fail diff --git a/README.md b/README.md index 53f56ac..d035b78 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,12 @@ npm install tap-difflet --save-dev tape test/*.js | tap-difflet ~~~ +For pessimistic usage specify -p or --pessimist - this will only output the errors and the summary. + +~~~ text +tape test/*.js | tap-difflet -p +~~~ + ## Output ![tap-difflet](http://i.imgur.com/8uFAvXU.png) diff --git a/bin/tap-difflet b/bin/tap-difflet index d3dc30d..921cc7a 100755 --- a/bin/tap-difflet +++ b/bin/tap-difflet @@ -19,7 +19,74 @@ var tap = parser(); var out = through(); var dup = duplexer(tap, out); + +/* Pessimism */ + +function userSpecifiedPessimistic (args) { + for (var ai=2; ai < args.length; ++ai) { + if (args[ai] === '-p' || args[ai] === '--pessimist') { + return true; + } + } + + return false; +}; + + +if (userSpecifiedPessimistic(process.argv)) { + var anAssertFailed = true; + var originalOut = out; + var buffer = null; + tap.on('comment', function(comment) { + if (buffer && anAssertFailed) { + for (var bi=0; bi= 0) { str = ansidiff.lines(expected, actual); } else { str = ansidiff.chars(expected, actual); } - } else if (typeof expected === "object") { + } else if (typeof expected === 'object') { str = objdiff(expected, actual); } else { str = chalk.white('Expected ') + chalk.bold(''+expected) + chalk.white(' but got ') + chalk.bold(''+actual); diff --git a/test/mix.js b/test/mix.js new file mode 100644 index 0000000..4f7a31a --- /dev/null +++ b/test/mix.js @@ -0,0 +1,2 @@ +require ('./pass'); +require ('./fail'); \ No newline at end of file