diff options
author | Louis Pilfold <louis@lpil.uk> | 2021-07-13 10:23:17 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2021-07-13 11:06:58 +0100 |
commit | fa93398d805ba13a44d26b4ccb83ef3f9edf1d01 (patch) | |
tree | fd12db4417937e42232cb8db43e2fd0f5b875324 /bin | |
parent | 3e07ebbc721bd55d111c4e48af76dc8243e0149b (diff) | |
download | gleam_stdlib-fa93398d805ba13a44d26b4ccb83ef3f9edf1d01.tar.gz gleam_stdlib-fa93398d805ba13a44d26b4ccb83ef3f9edf1d01.zip |
JavaScript test runner
Diffstat (limited to 'bin')
-rw-r--r-- | bin/run-tests.js | 38 | ||||
-rw-r--r-- | bin/test.sh | 7 |
2 files changed, 45 insertions, 0 deletions
diff --git a/bin/run-tests.js b/bin/run-tests.js new file mode 100644 index 0000000..46e7963 --- /dev/null +++ b/bin/run-tests.js @@ -0,0 +1,38 @@ +import { opendir } from "fs/promises"; + +const dir = "gen/javascript/gleam/"; + +async function main() { + console.log("Running tests..."); + + let passes = 0; + let failures = 0; + + for await (let entry of await opendir(dir)) { + if (!entry.name.endsWith("_test.js")) continue; + let path = "../" + dir + entry.name; + process.stdout.write("\ngleam/" + entry.name.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(); diff --git a/bin/test.sh b/bin/test.sh new file mode 100644 index 0000000..777c50b --- /dev/null +++ b/bin/test.sh @@ -0,0 +1,7 @@ +set -eu + +OUT=gen/javascript +rm -fr $OUT +gleam compile-package --name gleam_stdlib --target javascript --src src --test test --out $OUT +cp src/*.js $OUT/ +node bin/run-tests.js |