67 lines
1.9 KiB
JavaScript
Executable File
67 lines
1.9 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
const fs = require("fs");
|
|
const glob = require("glob");
|
|
const parser = require("junit-xml-parser").parser;
|
|
|
|
let output = "status";
|
|
if (process.argv.length > 2) {
|
|
output = process.argv[2];
|
|
}
|
|
|
|
let totalTests = 0;
|
|
let failedTests = 0;
|
|
let failedTestDetails = [];
|
|
|
|
glob("**/TEST*.xml", async function(err, files) {
|
|
// console.dir(files);
|
|
for (let index = 0; index < files.length; index++) {
|
|
const junitresults = await parser.parse(fs.readFileSync(files[index]));
|
|
// console.dir(junitresults);
|
|
totalTests += junitresults.suite.summary.tests;
|
|
failedTests += junitresults.suite.summary.failures;
|
|
if (junitresults.suite.summary.failures > 0) {
|
|
for (let tindex = 0; tindex < junitresults.suite.tests.length; tindex++) {
|
|
if (junitresults.suite.tests[tindex].failure != null) {
|
|
failedTestDetails.push(
|
|
junitresults.suite.name +
|
|
"/" +
|
|
junitresults.suite.tests[tindex].name
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (output === "text") {
|
|
outputText();
|
|
} else if (output === "summary") {
|
|
outputSummary();
|
|
} else {
|
|
if (failedTests > 0) {
|
|
console.log("Failing tests detected, so returning a non-zero exit code");
|
|
process.exit(1);
|
|
}
|
|
}
|
|
});
|
|
|
|
function outputText() {
|
|
console.log("### Test Failures:");
|
|
if (failedTestDetails.length > 0) {
|
|
for (let index = 0; index < failedTestDetails.length; index++) {
|
|
console.log("- " + failedTestDetails[index]);
|
|
}
|
|
} else if (totalTests > 0) {
|
|
console.log("No failing tests, awesome!");
|
|
} else {
|
|
console.log("No tests found.");
|
|
}
|
|
}
|
|
|
|
function outputSummary() {
|
|
console.log("### Testing Summary:");
|
|
console.log(" ");
|
|
console.log("- " + totalTests + " Total test(s)");
|
|
console.log("- " + (totalTests - failedTests) + " Successful test(s)");
|
|
console.log("- " + failedTests + " Failed test(s)");
|
|
}
|