ECC/tests/lib/helpers/mini-test-runner.js

57 lines
1.1 KiB
JavaScript

/**
* Shared mini test harness for standalone tests/lib/*.test.js scripts.
*
* Centralizes test execution and console reporting so individual test
* files don't duplicate the runner or log directly.
*/
'use strict';
function report(message) {
console.log(message);
}
function test(name, fn) {
try {
fn();
report(`${name}`);
return true;
} catch (err) {
report(`${name}`);
report(` Error: ${err.message}`);
return false;
}
}
async function testAsync(name, fn) {
try {
await fn();
report(`${name}`);
return true;
} catch (err) {
report(`${name}`);
report(` Error: ${err.message}`);
return false;
}
}
function banner(title) {
report(`\n=== ${title} ===`);
}
function section(label) {
report(`\n${label}`);
}
function summary(passed, failed) {
report(`\n Results: ${passed} passed, ${failed} failed`);
if (failed > 0) process.exit(1);
}
function fatal(message) {
console.error(message);
process.exit(1);
}
module.exports = { test, testAsync, banner, section, summary, fatal };