68 lines
1.3 KiB
JavaScript
68 lines
1.3 KiB
JavaScript
|
const mri = require("mri");
|
||
|
const { spawn } = require("child_process");
|
||
|
|
||
|
const argv = process.argv.slice(2);
|
||
|
const args = mri(argv);
|
||
|
|
||
|
const bin_dir = "./node_modules/.bin/";
|
||
|
|
||
|
const mocha = bin_dir + "mocha";
|
||
|
|
||
|
let mocha_options = [
|
||
|
"--recursive",
|
||
|
"--timeout=10000",
|
||
|
"--require",
|
||
|
"source-map-support/register",
|
||
|
"-r",
|
||
|
" ts-node/register"
|
||
|
];
|
||
|
|
||
|
if (args["test-report"]) {
|
||
|
mocha_options = [
|
||
|
...mocha_options,
|
||
|
"--reporter",
|
||
|
"xunit",
|
||
|
"--reporter-option",
|
||
|
"output=.xunit",
|
||
|
];
|
||
|
}
|
||
|
|
||
|
const mocha_files = ["src/**/*.test.ts"];
|
||
|
|
||
|
let command = [mocha, ...mocha_options, ...mocha_files];
|
||
|
|
||
|
if (args.cover) {
|
||
|
const nyc = [
|
||
|
bin_dir + "nyc",
|
||
|
"-all",
|
||
|
"--exclude",
|
||
|
"lib",
|
||
|
"--source-map",
|
||
|
"false",
|
||
|
];
|
||
|
if (args["cover-html"]) {
|
||
|
nyc.push("--reporter", "lcov");
|
||
|
} else {
|
||
|
nyc.push("--reporter", "clover");
|
||
|
}
|
||
|
command = [...nyc, ...command];
|
||
|
}
|
||
|
|
||
|
if (args.debug) {
|
||
|
command = ["node", "inspect", ...command];
|
||
|
}
|
||
|
|
||
|
console.log("spawning mocha...", command);
|
||
|
|
||
|
const proc = spawn(command[0], command.slice(1), {
|
||
|
stdio: "inherit",
|
||
|
env: process.env,
|
||
|
});
|
||
|
|
||
|
proc.on("exit", function (code) {
|
||
|
if (args["test-report"]) {
|
||
|
process.exit(0);
|
||
|
} else {
|
||
|
process.exit(code);
|
||
|
}
|
||
|
});
|