#!/usr/bin/env bash # E2E Server-Sektion: echter Match-Server (Admin-API an, kein Master) + das echte # Editor-Panel (tests/server_sektion_e2e.gd). Environment: GODOT, MATCH_DIR # (Default ../scopedvr-match-server), SRV_ADMIN_PORT (24591), SRV_GAME_PORT (24593). set -u GODOT="${GODOT:-/home/slyphax/godot/Godot_v4.7.2-stable_linux.x86_64}" EDITOR_DIR="$(cd "$(dirname "$0")/.." && pwd)" MATCH_DIR="${MATCH_DIR:-$(dirname "$EDITOR_DIR")/scopedvr-match-server}" APORT="${SRV_ADMIN_PORT:-24591}" GPORT="${SRV_GAME_PORT:-24593}" export GODOT_SILENCE_ROOT_WARNING=1 LOGDIR="/tmp/svr_sektion_logs_$$" mkdir -p "$LOGDIR/maps" TOKEN="e2e$(head -c 12 /dev/urandom | od -An -tx1 | tr -d ' \n')" "$GODOT" --headless --path "$MATCH_DIR" --import > "$LOGDIR/import_match.log" 2>&1 "$GODOT" --headless --path "$EDITOR_DIR" --import > "$LOGDIR/import_editor.log" 2>&1 cat > "$LOGDIR/admin.cfg" < "$LOGDIR/server.log" 2>&1 & SPID=$! for i in $(seq 1 30); do grep -q "API lauscht" "$LOGDIR/server.log" 2>/dev/null && break; sleep 1; done sleep 2 SRV_PORT="$APORT" SRV_TOKEN="$TOKEN" SRV_SVMAP="$MATCH_DIR/maps/example_valley.svmap" \ "$GODOT" --headless --path "$EDITOR_DIR" -s res://tests/server_sektion_e2e.gd 2>&1 | tee "$LOGDIR/editor.log" | grep -E "^ (ok|FAIL)|CHECKS|SCRIPT ERROR" rc=${PIPESTATUS[0]} kill "$SPID" 2>/dev/null; pkill -f -- "--config $LOGDIR/admin.cfg" 2>/dev/null; wait 2>/dev/null grep -q "$TOKEN" "$LOGDIR/editor.log" && { echo "FAIL: Token im Editor-Log"; rc=1; } || echo "PASS: Token nicht im Editor-Log" echo "--- Logs: $LOGDIR ---" exit "$rc"