Files
dreamer-game/tests/run.sh
2026-09-16 16:15:32 +02:00

37 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Prüflauf: erst der Parse-Vorlauf (Sekunden), dann die Suite.
# tests/run.sh voller Lauf
# tests/run.sh schnell ohne die langen Simulationen
cd "$(dirname "$0")/.." || exit 2
log=${TMPDIR:-/tmp}/traumwandler
mkdir -p "$log"
if ! timeout 90 godot --headless --path . tests/parse.tscn > "$log/parse.log" 2>&1; then
grep -E "SCRIPT ERROR|PARSE FEHLER|Parse-Vorlauf" "$log/parse.log"
echo "Parse-Vorlauf fehlgeschlagen"
exit 1
fi
timeout 600 godot --headless --path . tests/verify.tscn -- "$@" > "$log/suite.log" 2>&1
code=$?
if [ -n "${DISPLAY:-}" ] && [ "${1:-}" != "schnell" ]; then
# Rauchtest: das echte Spiel mit der echten Aushänge-Datei, ein paar Sekunden
timeout 120 godot --path . tests/rauch.tscn > "$log/rauch.log" 2>&1
rauch=$(grep -E "^(SCRIPT )?ERROR:" "$log/rauch.log" | grep -v leaked | sort | uniq -c | sort -rn)
if [ -n "$rauch" ] || ! grep -q "RAUCHTEST OK" "$log/rauch.log"; then
echo "Rauchtest fehlgeschlagen:"; echo "$rauch" | head -5; grep "RAUCHTEST" "$log/rauch.log"; [ $code -eq 0 ] && code=4
else
echo "Rauchtest OK"
fi
# Flimmer-Probe: stehende Szene, Kamera minimal bewegt, Bilder verglichen
timeout 120 godot --path . tests/flimmer.tscn > "$log/flimmer.log" 2>&1
grep "FLIMMERN" "$log/flimmer.log"
if ! grep -q "FLIMMERN OK" "$log/flimmer.log"; then [ $code -eq 0 ] && code=5; fi
else
echo "Rauchtest und Flimmer-Probe übersprungen (kein Display oder Schnelllauf)"
fi
echo "OK: $(grep -c ' OK ' "$log/suite.log")"
grep -E "FEHLT|Fehlende|SCRIPT ERROR|Parse Error|Langsamste|Schnelllauf" "$log/suite.log"
fehler=$(grep -E "^(SCRIPT )?ERROR:" "$log/suite.log" | grep -v "leaked" | sort | uniq -c | sort -rn)
if [ -n "$fehler" ]; then echo "Engine-Fehler:"; echo "$fehler" | head -10; [ $code -eq 0 ] && code=3; fi
[ $code -eq 124 ] && echo "Timeout -- Log: $log/suite.log"
exit $code