This commit is contained in:
team3
2026-09-16 13:21:56 +02:00
parent 7979d5c336
commit 3be22351a3
25 changed files with 734 additions and 195 deletions

51
tests/run.sh Executable file
View File

@@ -0,0 +1,51 @@
#!/usr/bin/env bash
# Alle headless Tests. Aufruf: make test (oder: bash tests/run.sh)
# Der Mehrspieler-Test braucht einen freien Port; 8000 ist auf Rechnern mit
# laufendem Entwicklungsserver oft belegt, deshalb 8765.
set -u
GODOT="${GODOT:-$HOME/bin/godot}"
PORT="${PORT:-8765}"
TMP="$(mktemp -d)"
cd "$(dirname "$0")/.."
ergebnis=0
lauf() { # name, timeout, argumente...
local name="$1"; local zeit="$2"; shift 2
echo "=== $name"
timeout "$zeit" "$GODOT" --headless --path . "res://tests/$name.tscn" -- "$@" > "$TMP/$name.log" 2>&1
local rc=$?
grep -E "^(OK |FEHL| |TEST:)" "$TMP/$name.log"
local fehler; fehler=$(grep -c "SCRIPT ERROR" "$TMP/$name.log")
[ "$fehler" -gt 0 ] && { echo " $fehler Skriptfehler im Log: $TMP/$name.log"; rc=1; }
[ $rc -ne 0 ] && ergebnis=1
}
lauf logik 200
lauf nochmal 120
lauf bots 900 2
echo "=== mehrspieler"
rm -f "$TMP/code.txt"
timeout 700 "$GODOT" --headless --path . res://tests/mp_start.tscn -- server "$PORT" > "$TMP/srv.log" 2>&1 &
SRV=$!
sleep 3
PIRATE_DICE_SERVER="ws://127.0.0.1:$PORT" timeout 680 "$GODOT" --headless --path . res://tests/mp_start.tscn -- host "$TMP/code.txt" > "$TMP/host.log" 2>&1 &
H=$!
sleep 2
PIRATE_DICE_SERVER="ws://127.0.0.1:$PORT" timeout 680 "$GODOT" --headless --path . res://tests/mp_start.tscn -- join "$TMP/code.txt" > "$TMP/join.log" 2>&1 &
J=$!
wait $H; rc_h=$?
wait $J; rc_j=$?
# Der Server beendet sich nach dem Ende selbst. Ihn abzuschiessen würde
# seine letzten Zeilen verlieren - Ausgabe in eine Datei ist gepuffert.
for _ in $(seq 1 40); do kill -0 $SRV 2>/dev/null || break; sleep 1; done
kill $SRV 2>/dev/null; wait $SRV 2>/dev/null
grep -E "^(OK |FEHL|SERVER:|TEST:)" "$TMP/host.log" "$TMP/join.log" "$TMP/srv.log" | sed 's|^.*/||'
pfad=$(cat "$TMP/host.log" "$TMP/join.log" "$TMP/srv.log" | grep -c "Failed to get path")
fehler=$(cat "$TMP/host.log" "$TMP/join.log" "$TMP/srv.log" | grep -c "SCRIPT ERROR")
echo " RPC-Pfadfehler=$pfad Skriptfehler=$fehler (Logs: $TMP)"
[ $rc_h -ne 0 ] || [ $rc_j -ne 0 ] || [ "$pfad" -gt 0 ] || [ "$fehler" -gt 0 ] && ergebnis=1
echo
[ $ergebnis -eq 0 ] && echo "ALLE TESTS GRÜN" || echo "TESTS ROT (Logs: $TMP)"
exit $ergebnis