- tests.sh: run all tests with `bash tests.sh`, summary with `--short` - tests.sh --filter mcpd/cli: run specific package - project-routes.test.ts: 17 new route-level tests covering CRUD, attach/detach, and the ownerId filtering bug fix Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
83 lines
1.8 KiB
Bash
Executable File
83 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
PATH="$HOME/.npm-global/bin:$PATH"
|
|
|
|
SHORT=false
|
|
FILTER=""
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--short|-s) SHORT=true; shift ;;
|
|
--filter|-f) FILTER="$2"; shift 2 ;;
|
|
*) echo "Usage: tests.sh [--short|-s] [--filter|-f <package>]"; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
strip_ansi() {
|
|
sed $'s/\033\[[0-9;]*m//g'
|
|
}
|
|
|
|
run_tests() {
|
|
local pkg="$1"
|
|
local label="$2"
|
|
|
|
if $SHORT; then
|
|
local tmpfile
|
|
tmpfile=$(mktemp)
|
|
trap "rm -f $tmpfile" RETURN
|
|
|
|
local exit_code=0
|
|
pnpm --filter "$pkg" test:run >"$tmpfile" 2>&1 || exit_code=$?
|
|
|
|
# Parse from cleaned output
|
|
local clean
|
|
clean=$(strip_ansi < "$tmpfile")
|
|
|
|
local tests_line files_line duration_line
|
|
tests_line=$(echo "$clean" | grep -oP 'Tests\s+\K.*' | tail -1 | xargs)
|
|
files_line=$(echo "$clean" | grep -oP 'Test Files\s+\K.*' | tail -1 | xargs)
|
|
duration_line=$(echo "$clean" | grep -oP 'Duration\s+\K[0-9.]+s' | tail -1)
|
|
|
|
if [[ $exit_code -eq 0 ]]; then
|
|
printf " \033[32mPASS\033[0m %-6s %s | %s | %s\n" "$label" "$files_line" "$tests_line" "$duration_line"
|
|
else
|
|
printf " \033[31mFAIL\033[0m %-6s %s | %s | %s\n" "$label" "$files_line" "$tests_line" "$duration_line"
|
|
echo "$clean" | grep -E 'FAIL |AssertionError|expected .* to' | head -10 | sed 's/^/ /'
|
|
fi
|
|
|
|
rm -f "$tmpfile"
|
|
return $exit_code
|
|
else
|
|
echo "=== $label ==="
|
|
pnpm --filter "$pkg" test:run
|
|
echo ""
|
|
fi
|
|
}
|
|
|
|
if $SHORT; then
|
|
echo "Running tests..."
|
|
echo ""
|
|
fi
|
|
|
|
failed=0
|
|
|
|
if [[ -z "$FILTER" || "$FILTER" == "mcpd" ]]; then
|
|
run_tests mcpd "mcpd" || failed=1
|
|
fi
|
|
|
|
if [[ -z "$FILTER" || "$FILTER" == "cli" ]]; then
|
|
run_tests cli "cli" || failed=1
|
|
fi
|
|
|
|
if $SHORT; then
|
|
echo ""
|
|
if [[ $failed -eq 0 ]]; then
|
|
echo "All tests passed."
|
|
else
|
|
echo "Some tests FAILED."
|
|
fi
|
|
fi
|
|
|
|
exit $failed
|