37 lines
1.8 KiB
Bash
Executable File
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
|