aboutsummaryrefslogtreecommitdiff
path: root/bin/run-tests.js
diff options
context:
space:
mode:
Diffstat (limited to 'bin/run-tests.js')
-rw-r--r--bin/run-tests.js42
1 files changed, 21 insertions, 21 deletions
diff --git a/bin/run-tests.js b/bin/run-tests.js
index b8ab5d0..afbd7ec 100644
--- a/bin/run-tests.js
+++ b/bin/run-tests.js
@@ -1,18 +1,7 @@
-import { readdir } from "fs/promises";
-import { resolve, relative, basename } from "path";
+import { readdir, stat } from "fs/promises";
+import { resolve, relative } from "path";
-const dir = "node_modules/gleam_javascript";
-
-async function getFiles(dir) {
- const dirents = await readdir(dir, { withFileTypes: true });
- const files = await Promise.all(
- dirents.map((dirent) => {
- const res = resolve(dir, dirent.name);
- return dirent.isDirectory() ? getFiles(res) : res;
- })
- );
- return Array.prototype.concat(...files);
-}
+const dir = "_build/lib/gleam_javascript";
async function main() {
console.log("Running tests...");
@@ -20,18 +9,19 @@ async function main() {
let passes = 0;
let failures = 0;
- for (let path of await getFiles(dir)) {
+ for await (let path of await getFiles(dir)) {
if (!path.endsWith("_test.js")) continue;
- process.stdout.write("\n" + relative(dir, path).slice(0, -3) + ":\n ");
let module = await import(path);
- for (let fnName of Object.keys(module)) {
+
+ for await (let fnName of Object.keys(module)) {
if (!fnName.endsWith("_test")) continue;
try {
- module[fnName]();
- process.stdout.write("✨");
+ await module[fnName]();
+ process.stdout.write(`\u001b[32m.\u001b[0m`);
passes++;
} catch (error) {
- process.stdout.write(`❌ ${fnName}: ${error}\n `);
+ let moduleName = "\n" + relative(dir, path).slice(0, -3);
+ process.stdout.write(`\n❌ ${moduleName}.${fnName}: ${error}\n`);
failures++;
}
}
@@ -40,9 +30,19 @@ async function main() {
console.log(`
${passes + failures} tests
-${passes} passes
${failures} failures`);
process.exit(failures ? 1 : 0);
}
+async function getFiles(dir) {
+ const subdirs = await readdir(dir);
+ const files = await Promise.all(
+ subdirs.map(async (subdir) => {
+ const res = resolve(dir, subdir);
+ return (await stat(res)).isDirectory() ? getFiles(res) : res;
+ })
+ );
+ return files.reduce((a, f) => a.concat(f), []);
+}
+
main();