Files
Cinderwild/tests/run_all.sh
Paul Bailey d0f473e57b M2.2: player bodies, name tags, shared island and checked movement
- Joining loads the server's island (seed, spawn, clock); the server
  generates the same terrain from its seed and keeps a world clock that
  pauses when empty
- Other players are procedural low-poly characters in their chosen colours
  with name tags (hidden by walls, fading with distance), walk/run/swim
  animation and held items
- Movement: local and instant, sent at 20 Hz stamped with the sender's
  clock; the server refuses impossible moves (speed, rising, leaving the
  island, underground) and sends the player back; flagged respawns allowed
- Avatars drawn 100 ms behind and interpolated, with brief extrapolation
- Online: no pausing, player list in the Esc menu, Disconnect back to the
  title (with the reason); animals off and world changes local-only until
  M2.3-M2.5, shown on the HUD
- test_net_world: real server + walking and cheating bots at 100 ms +/-
  30 ms simulated latency (27 checks)
2026-11-04 15:08:14 +00:00

26 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
# Runs every headless test suite. Fails if any suite fails OR prints a script
# error (a script that fails to compile can otherwise let a suite "pass").
# Usage: tests/run_all.sh (from the repo root; needs `godot` on PATH)
cd "$(dirname "$0")/.." || exit 1
status=0
for t in test_survival_core test_survival_stats test_save_load test_weather_building test_creatures_combat test_wolves test_fishing_diet test_net_lobby test_net_world test_terrain_edges test_boundary; do
extra=""
[ "$t" = "test_boundary" ] && extra="--fixed-fps 30"
# A suite that waits on a world that failed to load would hang forever,
# so give each one a time limit when `timeout` is available.
limit=""
command -v timeout >/dev/null 2>&1 && limit="timeout 300"
out=$($limit godot --headless --path . $extra --script "res://tests/$t.gd" 2>&1)
code=$?
result=$(printf '%s\n' "$out" | grep "RESULT:" | tail -n 1)
if [ $code -ne 0 ] || printf '%s\n' "$out" | grep -q "SCRIPT ERROR"; then
echo "FAIL $t $result"
printf '%s\n' "$out" | grep -E "FAIL|SCRIPT ERROR|at: " | head -n 20
status=1
else
echo "ok $t $result"
fi
done
exit $status