#!/usr/bin/env bash # Run all project tests. Exit code 0 = all passed. # Usage: bash run_tests.sh [--no-gameplay] set -euo pipefail GODOT="${GODOT:-godot}" SKIP_GAMEPLAY=0 for arg in "$@"; do [[ "$arg" == "--no-gameplay" ]] && SKIP_GAMEPLAY=1; done echo "=== gdlint ===" gdlint *.gd levels/*.gd tests/*.gd echo "" echo "=== Logic tests ===" "$GODOT" --headless --script tests/logic_test.gd echo "" echo "=== Console focus tests ===" "$GODOT" --headless --script tests/console_focus_test.gd echo "" echo "=== Level switch tests (no cross-level geometry/collider leaks) ===" "$GODOT" --headless --script tests/level_switch_test.gd echo "" echo "=== Touch control tests (joystick self-heals, never strands) ===" "$GODOT" --headless --script tests/touch_controls_test.gd echo "" echo "=== Rigid-skin tests (web mesh conversion keeps all materials) ===" "$GODOT" --headless --script tests/rigid_skin_test.gd echo "" echo "=== Performance tests (frame-budget regression guard) ===" "$GODOT" --headless --script tests/performance_test.gd echo "" echo "=== Ragdoll perf (on-hit spike breakdown: build / sim-start / burst / mass hit) ===" "$GODOT" --headless --script tests/ragdoll_perf_test.gd if [[ "$SKIP_GAMEPLAY" -eq 0 ]]; then echo "" echo "=== Gameplay tests (headless — assertions only, screenshots may be blank) ===" "$GODOT" --headless --script tests/gameplay_test.gd echo "Frame strip: tests/output/gameplay/" fi echo "" echo "=== All tests passed ==="