aboutsummaryrefslogtreecommitdiff
path: root/tests/run_tests.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run_tests.sh')
-rw-r--r--tests/run_tests.sh57
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
new file mode 100644
index 0000000..4569be3
--- /dev/null
+++ b/tests/run_tests.sh
@@ -0,0 +1,57 @@
+#!/usr/bin/env bash
+# tests/run_tests.sh
+# Entry point for the trbldoc test suite.
+# Requires bats-core: https://github.com/bats-core/bats-core
+#
+# Quick install (pick one):
+# npm install -g bats
+# brew install bats-core
+# git clone https://github.com/bats-core/bats-core ~/.bats && ~/.bats/install.sh /usr/local
+#
+# Usage:
+# bash tests/run_tests.sh # run all tests
+# bash tests/run_tests.sh unit # run only unit tests
+# bash tests/run_tests.sh integration # run only integration tests
+
+set -euo pipefail
+
+SCRIPT_DIR="$(cd "$(dirname "${BATS_TEST_FILENAME:-${BASH_SOURCE[0]}}")" && pwd)"
+REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
+
+# ── bats check ──────────────────────────────────────────────────────────────
+if ! command -v bats &>/dev/null; then
+ echo "ERROR: bats is not installed or not on PATH." >&2
+ echo "Install with one of:" >&2
+ echo " npm install -g bats" >&2
+ echo " brew install bats-core" >&2
+ echo " git clone https://github.com/bats-core/bats-core ~/.bats && ~/.bats/install.sh /usr/local" >&2
+ exit 1
+fi
+
+# ── suite selection ──────────────────────────────────────────────────────────
+TARGET="${1:-all}"
+
+case "$TARGET" in
+ unit)
+ SUITE_DIRS=("$SCRIPT_DIR/unit")
+ ;;
+ integration)
+ SUITE_DIRS=("$SCRIPT_DIR/integration")
+ ;;
+ all)
+ SUITE_DIRS=("$SCRIPT_DIR/unit" "$SCRIPT_DIR/integration")
+ ;;
+ *)
+ echo "Usage: $0 [all|unit|integration]" >&2
+ exit 1
+ ;;
+esac
+
+# Export so bats test files can locate project files
+export REPO_ROOT
+
+echo "Running trbldoc test suite (target: $TARGET)"
+echo "bats $(bats --version)"
+echo ""
+
+bats --print-output-on-failure "${SUITE_DIRS[@]}"