aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2021-07-13 10:23:17 +0100
committerLouis Pilfold <louis@lpil.uk>2021-07-13 11:06:58 +0100
commitfa93398d805ba13a44d26b4ccb83ef3f9edf1d01 (patch)
treefd12db4417937e42232cb8db43e2fd0f5b875324 /bin
parent3e07ebbc721bd55d111c4e48af76dc8243e0149b (diff)
downloadgleam_stdlib-fa93398d805ba13a44d26b4ccb83ef3f9edf1d01.tar.gz
gleam_stdlib-fa93398d805ba13a44d26b4ccb83ef3f9edf1d01.zip
JavaScript test runner
Diffstat (limited to 'bin')
-rw-r--r--bin/run-tests.js38
-rw-r--r--bin/test.sh7
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