diff options
Diffstat (limited to 'bin/run-tests.js')
-rw-r--r-- | bin/run-tests.js | 42 |
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(); |