Add simple in-process test reporter for tape output.

This commit is contained in:
David Anson 2020-01-09 20:57:14 -08:00
parent 3c100a21ff
commit 6d9cbfe7be
3 changed files with 49 additions and 0 deletions

View file

@ -6,6 +6,7 @@ const fs = require("fs");
const path = require("path"); const path = require("path");
const glob = require("glob"); const glob = require("glob");
const tape = require("tape"); const tape = require("tape");
require("./tape-reporter");
const markdownlint = require("../lib/markdownlint"); const markdownlint = require("../lib/markdownlint");
const { utf8Encoding } = require("../helpers"); const { utf8Encoding } = require("../helpers");

View file

@ -12,6 +12,7 @@ const pluginKatex = require("markdown-it-katex");
const pluginSub = require("markdown-it-sub"); const pluginSub = require("markdown-it-sub");
const pluginSup = require("markdown-it-sup"); const pluginSup = require("markdown-it-sup");
const tape = require("tape"); const tape = require("tape");
require("./tape-reporter");
const tv4 = require("tv4"); const tv4 = require("tv4");
const packageJson = require("../package.json"); const packageJson = require("../package.json");
const markdownlint = require("../lib/markdownlint"); const markdownlint = require("../lib/markdownlint");

47
test/tape-reporter.js Normal file
View file

@ -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));
});