aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2021-08-29 15:03:14 +0100
committerLouis Pilfold <louis@lpil.uk>2021-08-29 15:03:14 +0100
commit0d558ccee2ce740a3f2dea694527a8d1d21980cb (patch)
treeb6642a23e047ee98926a74d1ca04fcc96bf24490 /bin
parent28e0d90719789349e64fd0900d12077929355a6d (diff)
downloadjavascript-0d558ccee2ce740a3f2dea694527a8d1d21980cb.tar.gz
javascript-0d558ccee2ce740a3f2dea694527a8d1d21980cb.zip
Arrays
Diffstat (limited to 'bin')
-rw-r--r--bin/run-tests.js42
-rw-r--r--bin/test.sh42
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