update
This commit is contained in:
51
tests/run.sh
Executable file
51
tests/run.sh
Executable 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
|
||||
Reference in New Issue
Block a user