diff options
author | Louis Pilfold <louis@lpil.uk> | 2021-08-29 15:03:14 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2021-08-29 15:03:14 +0100 |
commit | 0d558ccee2ce740a3f2dea694527a8d1d21980cb (patch) | |
tree | b6642a23e047ee98926a74d1ca04fcc96bf24490 /bin | |
parent | 28e0d90719789349e64fd0900d12077929355a6d (diff) | |
download | javascript-0d558ccee2ce740a3f2dea694527a8d1d21980cb.tar.gz javascript-0d558ccee2ce740a3f2dea694527a8d1d21980cb.zip |
Arrays
Diffstat (limited to 'bin')
-rw-r--r-- | bin/run-tests.js | 42 | ||||
-rw-r--r-- | bin/test.sh | 42 |
2 files changed, 42 insertions, 42 deletions
diff --git a/bin/run-tests.js b/bin/run-tests.js index b8ab5d0..afbd7ec 100644 --- a/bin/run-tests.js +++ b/bin/run-tests.js @@ -1,18 +1,7 @@ -import { readdir } from "fs/promises"; -import { resolve, relative, basename } from "path"; +import { readdir, stat } from "fs/promises"; +import { resolve, relative } 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); -} +const dir = "_build/lib/gleam_javascript"; async function main() { console.log("Running tests..."); @@ -20,18 +9,19 @@ async function main() { let passes = 0; let failures = 0; - for (let path of await getFiles(dir)) { + for await (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)) { + + for await (let fnName of Object.keys(module)) { if (!fnName.endsWith("_test")) continue; try { - module[fnName](); - process.stdout.write("â¨"); + await module[fnName](); + process.stdout.write(`\u001b[32m.\u001b[0m`); passes++; } catch (error) { - process.stdout.write(`â ${fnName}: ${error}\n `); + let moduleName = "\n" + relative(dir, path).slice(0, -3); + process.stdout.write(`\nâ ${moduleName}.${fnName}: ${error}\n`); failures++; } } @@ -40,9 +30,19 @@ async function main() { console.log(` ${passes + failures} tests -${passes} passes ${failures} failures`); process.exit(failures ? 1 : 0); } +async function getFiles(dir) { + const subdirs = await readdir(dir); + const files = await Promise.all( + subdirs.map(async (subdir) => { + const res = resolve(dir, subdir); + return (await stat(res)).isDirectory() ? getFiles(res) : res; + }) + ); + return files.reduce((a, f) => a.concat(f), []); +} + main(); diff --git a/bin/test.sh b/bin/test.sh index d5c28b1..dbf6fa2 100644 --- a/bin/test.sh +++ b/bin/test.sh @@ -2,11 +2,11 @@ set -eu library_dir() { - echo "lib/$1" + echo "_build/deps/$1" } -library_out_dir() { - echo "node_modules/$1" +project_dir() { + echo "_build/lib/$1" } clone_dep() { @@ -15,7 +15,7 @@ clone_dep() { local url="$3" if [ ! -d "$dir" ] ; then - mkdir -p lib + mkdir -p "$dir" git clone --depth=1 --branch="$tag" "$url" "$dir" fi } @@ -27,36 +27,36 @@ compile_library() { shift local lib_flags=() for dep in "$@"; do - lib_flags+=("--lib=$(library_out_dir $dep)") + lib_flags+=("--lib=$(project_dir $dep)") done local dir=$(library_dir "$name") local src="$dir/src" - local test="$dir/test" - local out=$(library_out_dir "$name") - rm -rf out - - gleam compile-package \ - --name "$name" \ - --target javascript \ - --src "$src" \ - --out $(library_out_dir "$name") \ - "${lib_flags[@]: }" - - cp "$src/"*.js "$out/" + local out=$(project_dir "$name") + + + if [ ! -d "$out" ] ; then + gleam compile-package \ + --name "$name" \ + --target javascript \ + --src "$src" \ + --out $(project_dir "$name") \ + "${lib_flags[@]: }" + cp "$src/"*.js "$out/" + fi } clone_dep gleam_stdlib main https://github.com/gleam-lang/stdlib.git compile_library gleam_stdlib -rm -rf node_modules/gleam_javascript +rm -rf $(project_dir gleam_javascript) gleam compile-package \ --name gleam_javascript \ --target javascript \ --src src \ --test test \ - --out node_modules/gleam_javascript \ - --lib node_modules/gleam_stdlib -cp "src/"*.js "node_modules/gleam_javascript/" + --out $(project_dir gleam_javascript) \ + --lib $(project_dir gleam_stdlib) +cp "src/"*.js $(project_dir gleam_javascript)/ node bin/run-tests.js |