aboutsummaryrefslogtreecommitdiff
path: root/test/gleam_stdlib_test_ffi.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'test/gleam_stdlib_test_ffi.mjs')
-rwxr-xr-xtest/gleam_stdlib_test_ffi.mjs35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/gleam_stdlib_test_ffi.mjs b/test/gleam_stdlib_test_ffi.mjs
new file mode 100755
index 0000000..e948e0f
--- /dev/null
+++ b/test/gleam_stdlib_test_ffi.mjs
@@ -0,0 +1,35 @@
+import { opendir } from "fs/promises";
+
+const dir = "build/dev/javascript/gleam_stdlib/dist/gleam/";
+
+export 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.mjs")) continue;
+ let module = await import("./gleam/" + entry.name);
+
+ for (let fnName of Object.keys(module)) {
+ if (!fnName.endsWith("_test")) continue;
+ try {
+ module[fnName]();
+ process.stdout.write(`\u001b[32m.\u001b[0m`);
+ passes++;
+ } catch (error) {
+ let moduleName = "\ngleam/" + entry.name.slice(0, -3);
+ process.stdout.write(`\n❌ ${moduleName}.${fnName}: ${error}\n`);
+ failures++;
+ }
+ }
+ }
+
+ console.log(`
+
+${passes + failures} tests
+${passes} passes
+${failures} failures`);
+ process.exit(failures ? 1 : 0);
+}