From 28e0d90719789349e64fd0900d12077929355a6d Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Sat, 31 Jul 2021 14:08:42 +0100 Subject: Hello, Joe! --- bin/run-tests.js | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 bin/run-tests.js (limited to 'bin/run-tests.js') diff --git a/bin/run-tests.js b/bin/run-tests.js new file mode 100644 index 0000000..b8ab5d0 --- /dev/null +++ b/bin/run-tests.js @@ -0,0 +1,48 @@ +import { readdir } from "fs/promises"; +import { resolve, relative, basename } 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); +} + +async function main() { + console.log("Running tests..."); + + let passes = 0; + let failures = 0; + + for (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)) { + if (!fnName.endsWith("_test")) continue; + try { + module[fnName](); + process.stdout.write("✨"); + passes++; + } catch (error) { + process.stdout.write(`❌ ${fnName}: ${error}\n `); + failures++; + } + } + } + + console.log(` + +${passes + failures} tests +${passes} passes +${failures} failures`); + process.exit(failures ? 1 : 0); +} + +main(); -- cgit v1.2.3