esmodule-builder
Version:
ECMAScript-Module (ES Module) builder.
66 lines (57 loc) • 1.4 kB
JavaScript
/* -*- Mode: js; js-indent-level: 2; -*- */
/*
* Copyright 2011 Mozilla Foundation and contributors
* Licensed under the New BSD license. See LICENSE or:
* http://opensource.org/licenses/BSD-3-Clause
*/
const assert = require("assert");
const fs = require("fs");
const path = require("path");
async function run(tests) {
let total = 0;
let passed = 0;
for (let i = 0; i < tests.length; i++) {
for (const k in tests[i].testCase) {
if (/^test/.test(k)) {
total++;
try {
await tests[i].testCase[k](assert);
passed++;
} catch (e) {
console.log("FAILED " + tests[i].name + ": " + k + "!");
console.log(e.stack);
}
}
}
}
console.log("");
console.log(passed + " / " + total + " tests passed.");
console.log("");
return total - passed;
}
function isTestFile(f) {
const testToRun = process.argv[2];
return testToRun ? path.basename(testToRun) === f : /^test\-.*?\.js/.test(f);
}
function toRelativeModule(f) {
return "./" + f.replace(/\.js$/, "");
}
const requires = fs
.readdirSync(__dirname)
.filter(isTestFile)
.map(toRelativeModule);
run(
requires.map(require).map(function(mod, i) {
return {
name: requires[i],
testCase: mod
};
})
).then(
code => process.exit(code),
e => {
console.error(e);
process.exit(1);
}
);