Files
hakorune/tools/test/bin/run.sh

41 lines
1.1 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/../../.." && pwd)
LIB="$ROOT/tools/test/lib/shlib.sh"
if [[ ! -f "$LIB" ]]; then echo "lib/shlib.sh not found" >&2; exit 2; fi
source "$LIB"
TAG="all"
if [[ "${1:-}" == "--tag" && "${2:-}" != "" ]]; then TAG="$2"; shift 2; fi
# Discover tests
mapfile -t TESTS < <(find "$ROOT/tools/test" -type f -path '*/test.sh' | sort)
[[ ${#TESTS[@]} -eq 0 ]] && { echo "no tests found" >&2; exit 2; }
ok=0; fail=0; skip=0
for t in "${TESTS[@]}"; do
case "$TAG" in
fast)
# Very small subset: crate-exe, bridge shortcircuit, and tiny LLVM checks
if [[ "$t" != *"/smoke/crate-exe/"* && "$t" != *"/smoke/bridge/"* && "$t" != *"/smoke/llvm/quick/"* && "$t" != *"/smoke/llvm/ifmerge/"* && "$t" != *"/smoke/python/unit/"* ]]; then
echo "[SKIP] $t"; skip=$((skip+1)); continue
fi
;;
all) ;;
*) ;;
esac
echo "[RUN ] $t"
if ( cd "$(dirname "$t")" && bash ./test.sh ); then
echo "[ OK ] $t"
ok=$((ok+1))
else
echo "[FAIL] $t"
fail=$((fail+1))
fi
done
echo "Summary: ok=$ok fail=$fail skip=$skip"
exit $([[ $fail -eq 0 ]] && echo 0 || echo 1)