Files
CleanMM/tests/run.sh

45 lines
1.1 KiB
Bash
Raw Normal View History

2025-10-12 14:17:40 +08:00
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
2025-10-12 20:49:10 +08:00
if command -v shellcheck > /dev/null 2>&1; then
SHELLCHECK_TARGETS=()
while IFS= read -r file; do
SHELLCHECK_TARGETS+=("$file")
done < <(find "$PROJECT_ROOT/tests" -type f \( -name '*.bats' -o -name '*.sh' \) | sort)
2025-10-12 15:43:45 +08:00
2025-10-12 20:49:10 +08:00
if [[ ${#SHELLCHECK_TARGETS[@]} -gt 0 ]]; then
shellcheck --rcfile "$PROJECT_ROOT/.shellcheckrc" "${SHELLCHECK_TARGETS[@]}"
else
echo "No shell files to lint under tests/." >&2
fi
2025-10-12 15:43:45 +08:00
else
2025-10-12 20:49:10 +08:00
echo "shellcheck not found; skipping linting." >&2
2025-10-12 14:17:40 +08:00
fi
2025-10-12 20:49:10 +08:00
if command -v bats > /dev/null 2>&1; then
cd "$PROJECT_ROOT"
2025-10-12 14:17:40 +08:00
2025-10-12 20:49:10 +08:00
if [[ -z "${TERM:-}" ]]; then
export TERM="xterm-256color"
fi
2025-10-12 14:17:40 +08:00
2025-10-12 20:49:10 +08:00
if [[ $# -eq 0 ]]; then
set -- tests
fi
2025-10-12 14:17:40 +08:00
2025-10-12 20:49:10 +08:00
if [[ -t 1 ]]; then
bats -p "$@"
else
TERM="${TERM:-xterm-256color}" bats --tap "$@"
fi
2025-10-12 14:17:40 +08:00
else
2025-10-12 20:49:10 +08:00
cat << 'EOF' >&2
2025-10-12 15:43:45 +08:00
bats is required to run Mole's test suite.
Install via Homebrew with 'brew install bats-core' or via npm with 'npm install -g bats'.
EOF
2025-10-12 20:49:10 +08:00
exit 1
2025-10-12 14:17:40 +08:00
fi