#!/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/lib/*.js dsh/tests/*.mjs; do node --check "$f" done node --test dsh/tests/*.test.mjs