diff --git a/test/markdownlint-test-extra.js b/test/markdownlint-test-extra.js index d447449a..9d6276c0 100644 --- a/test/markdownlint-test-extra.js +++ b/test/markdownlint-test-extra.js @@ -6,6 +6,7 @@ const fs = require("fs"); const path = require("path"); const glob = require("glob"); const tape = require("tape"); +require("./tape-reporter"); const markdownlint = require("../lib/markdownlint"); const { utf8Encoding } = require("../helpers"); diff --git a/test/markdownlint-test.js b/test/markdownlint-test.js index 2f8ad088..9ce747db 100644 --- a/test/markdownlint-test.js +++ b/test/markdownlint-test.js @@ -12,6 +12,7 @@ const pluginKatex = require("markdown-it-katex"); const pluginSub = require("markdown-it-sub"); const pluginSup = require("markdown-it-sup"); const tape = require("tape"); +require("./tape-reporter"); const tv4 = require("tv4"); const packageJson = require("../package.json"); const markdownlint = require("../lib/markdownlint"); diff --git a/test/tape-reporter.js b/test/tape-reporter.js new file mode 100644 index 00000000..a87f23d7 --- /dev/null +++ b/test/tape-reporter.js @@ -0,0 +1,47 @@ +// @ts-check + +"use strict"; + +const tape = require("tape"); +const { EOL } = require("os"); +const { inspect } = require("util"); +const { stdout, stderr } = process; +const inspectOptions = { + "compact": true, + "breakLength": Infinity +}; + +let tests = 0; +let assertions = 0; +let failures = 0; + +tape + .createStream({ "objectMode": true }) + .on("data", (data) => { + if (data.type === "test") { + tests++; + stdout.write(`${data.name}${EOL}`); + } else if (data.id !== undefined) { + assertions++; + if (!data.ok) { + failures++; + stderr.write([ + ` ${data.file}`, + ` Message: ${data.name}`, + ` Operator: ${data.operator}`, + ` Expected: ${inspect(data.expected, inspectOptions)}`, + ` Actual: ${inspect(data.actual, inspectOptions)}`, + "" + ].join(EOL)); + } + } + }) + .on("close", () => { + stdout.write([ + "", + `Tests: ${tests}`, + `Asserts: ${assertions}`, + `Failures: ${failures}`, + "" + ].join(EOL)); + });