31 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# Tests for the DSH port. Pure Node, no DSH runtime required.
set -euo pipefail
root="$(cd "$(dirname "$0")/../.." && pwd)"
cd "$root"
# `core.symlinks=false` checkouts materialize the tracked `dsh/bundle/hooks`
# symlink as a regular file containing "../../hooks". Repair it before the
# tests, otherwise five guard tests fail with BLOCKED instead of testing.
ensure_bundle_hooks() {
local link="$root/dsh/bundle/hooks"
[ -L "$link" ] && return 0 # symlink (or a repaired one)
[ -d "$link" ] && return 0 # published bundle: a real copy of hooks/
if [ -f "$link" ] && [ "$(cat "$link")" = "../../hooks" ]; then
rm -f "$link"
ln -s ../../hooks "$link"
echo "repaired dsh/bundle/hooks -> ../../hooks (core.symlinks=false checkout)"
return 0
fi
echo "FAIL: dsh/bundle/hooks is neither a symlink to ../../hooks nor a copy of hooks/" >&2
exit 2
}
ensure_bundle_hooks
for f in dsh/bundle/index.js dsh/bundle/command-role.js dsh/bundle/command-check.js dsh/bundle/command-approve.js dsh/bundle/tool-approve.js dsh/bundle/lib/*.js dsh/tests/*.mjs; do
node --check "$f"
done
node --test dsh/tests/*.test.mjs