diff options
author | Louis Pilfold <louis@lpil.uk> | 2022-01-04 18:01:10 +0000 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2022-01-04 18:05:03 +0000 |
commit | d377e8ba146c4c597f7cf2041d4d5186a0977b50 (patch) | |
tree | 1cfc821d63afa34474ee71fc7e6666983915d623 /test | |
parent | a11f368e83598923014df9eda07821dc2ce143e7 (diff) | |
download | gleam_stdlib-d377e8ba146c4c597f7cf2041d4d5186a0977b50.tar.gz gleam_stdlib-d377e8ba146c4c597f7cf2041d4d5186a0977b50.zip |
Fix JS tests, discover bug
Diffstat (limited to 'test')
-rw-r--r-- | test/gleam/should.gleam | 2 | ||||
-rw-r--r-- | test/gleam_stdlib_test.gleam | 5 | ||||
-rwxr-xr-x | test/gleam_stdlib_test_ffi.mjs | 35 |
3 files changed, 41 insertions, 1 deletions
diff --git a/test/gleam/should.gleam b/test/gleam/should.gleam index 3cedbcd..792a4b4 100644 --- a/test/gleam/should.gleam +++ b/test/gleam/should.gleam @@ -22,7 +22,7 @@ if javascript { import gleam/string external fn stringify(anything) -> String = - "../gleam.js" "inspect" + "../gleam.mjs" "inspect" external fn crash(String) -> anything = "../gleam_stdlib.mjs" "crash" diff --git a/test/gleam_stdlib_test.gleam b/test/gleam_stdlib_test.gleam index 04635a2..3528ddd 100644 --- a/test/gleam_stdlib_test.gleam +++ b/test/gleam_stdlib_test.gleam @@ -2,3 +2,8 @@ if erlang { pub external fn main() -> Nil = "gleam_stdlib_test_ffi" "main" } + +if javascript { + pub external fn main() -> Nil = + "./gleam_stdlib_test_ffi.mjs" "main" +} 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); +} |