52 lines
2.1 KiB
Bash
Executable File
52 lines
2.1 KiB
Bash
Executable File
#!/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
|