3c15bd9e29
This adds operations + "To EBCDIC" + "From EBCDIC" This makes use of the npm codepage package but it is not installed as a dependency. Instead I used the `make.sh` script to export pages 37 and 500. To my knowledge there is no way currently to only import individual code pages from the npm package (hence the included script). If we were to import the package directly it increases the build size by 2.7MB.
99 lines
2.2 KiB
JavaScript
99 lines
2.2 KiB
JavaScript
/**
|
|
* TestRunner.js
|
|
*
|
|
* For running the tests in the test register.
|
|
*
|
|
* @author tlwr [toby@toby.codes]
|
|
* @author n1474335 [n1474335@gmail.com]
|
|
* @copyright Crown Copyright 2017
|
|
* @license Apache-2.0
|
|
*/
|
|
import "babel-polyfill";
|
|
|
|
import TestRegister from "./TestRegister.js";
|
|
import "./tests/operations/Base58.js";
|
|
import "./tests/operations/ByteRepr.js";
|
|
import "./tests/operations/CharEnc.js";
|
|
import "./tests/operations/Compress.js";
|
|
import "./tests/operations/FlowControl.js";
|
|
import "./tests/operations/MorseCode.js";
|
|
import "./tests/operations/StrUtils.js";
|
|
|
|
var allTestsPassing = true,
|
|
testStatusCounts = {
|
|
total: 0,
|
|
};
|
|
|
|
|
|
/**
|
|
* Helper function to convert a status to an icon.
|
|
*
|
|
* @param {string} status
|
|
* @returns {string}
|
|
*/
|
|
function statusToIcon(status) {
|
|
var icons = {
|
|
erroring: "🔥",
|
|
failing: "❌",
|
|
passing: "✔️️",
|
|
};
|
|
return icons[status] || "?";
|
|
}
|
|
|
|
|
|
/**
|
|
* Displays a given test result in the console.
|
|
*
|
|
* @param {Object} testResult
|
|
*/
|
|
function handleTestResult(testResult) {
|
|
allTestsPassing = allTestsPassing && testResult.status === "passing";
|
|
var newCount = (testStatusCounts[testResult.status] || 0) + 1;
|
|
testStatusCounts[testResult.status] = newCount;
|
|
testStatusCounts.total += 1;
|
|
|
|
console.log([
|
|
statusToIcon(testResult.status),
|
|
testResult.test.name
|
|
].join(" "));
|
|
|
|
if (testResult.output) {
|
|
console.log(
|
|
testResult.output
|
|
.trim()
|
|
.replace(/^/, "\t")
|
|
.replace(/\n/g, "\n\t")
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Fail if the process takes longer than 10 seconds.
|
|
*/
|
|
setTimeout(function() {
|
|
console.log("Tests took longer than 10 seconds to run, returning.");
|
|
process.exit(1);
|
|
}, 1 * 1000);
|
|
|
|
|
|
TestRegister.runTests()
|
|
.then(function(results) {
|
|
results.forEach(handleTestResult);
|
|
|
|
console.log("\n");
|
|
|
|
for (var testStatus in testStatusCounts) {
|
|
var count = testStatusCounts[testStatus];
|
|
if (count > 0) {
|
|
console.log(testStatus.toUpperCase(), count);
|
|
}
|
|
}
|
|
|
|
if (!allTestsPassing) {
|
|
console.log("\nNot all tests are passing");
|
|
}
|
|
|
|
process.exit(allTestsPassing ? 0 : 1);
|
|
});
|