diff options
author | Louis Pilfold <louis@lpil.uk> | 2021-07-31 14:08:42 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2021-07-31 14:10:32 +0100 |
commit | 28e0d90719789349e64fd0900d12077929355a6d (patch) | |
tree | 9f81b441e6f271abae42c17cb0d2d8cd0ed2faed /bin/run-tests.js | |
download | javascript-28e0d90719789349e64fd0900d12077929355a6d.tar.gz javascript-28e0d90719789349e64fd0900d12077929355a6d.zip |
Hello, Joe!
Diffstat (limited to 'bin/run-tests.js')
-rw-r--r-- | bin/run-tests.js | 48 |
1 files changed, 48 insertions, 0 deletions
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(); |