#!/usr/bin/env python3 """Забег Parkour по существу на локальном сервере: tools/test/parkour_run_test.py [рабочая_папка=/tmp/parkour_run]""" import os, shutil, subprocess, sys, time SRC = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")) W = os.path.abspath(sys.argv[1] if len(sys.argv) > 1 else "/tmp/parkour_run") shutil.rmtree(W, ignore_errors=True); os.makedirs(W) subprocess.run([f"{SRC}/tools/test/make_test_server.sh", f"{W}/server"], check=True, stdout=subprocess.DEVNULL) subprocess.run([f"{SRC}/tools/test/make_test_project.sh", f"{W}/project"], check=True, stdout=subprocess.DEVNULL) subprocess.run(["godot", "--headless", "--import", "--path", f"{W}/project"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) open(f"{W}/prof.cfg", "w").write('[profile]\nclient_id="%s"\nnick="Бегун"\nasked=true\n' % ("c" * 32)) slog = open(f"{W}/server.log", "w") server = subprocess.Popen(["godot", "--headless", "--path", f"{W}/server"], stdout=slog, stderr=subprocess.STDOUT, env=dict(os.environ, XDG_DATA_HOME=f"{W}/xdg")) time.sleep(2.5) r = subprocess.run(["godot", "--headless", "--path", f"{W}/project", "res://tools/test/parkour_run_test.tscn", "--", "--client", f"--profile={W}/prof.cfg"], capture_output=True, text=True, timeout=240) server.terminate(); server.wait(); slog.close() print("\n".join(l for l in r.stdout.splitlines() if l.startswith((" ДА", " НЕТ", "ПАРКУР", "SCRIPT", "Parse")))) print("сервер:", [l for l in open(f"{W}/server.log").read().splitlines() if "рекорд" in l]) sys.exit(0 if "ПАРКУР ПРОЙДЕН" in r.stdout else 1)