diff --git a/scripts/run_checkpoint_tests.py b/scripts/run_checkpoint_tests.py index e951de2..2ab9ae5 100755 --- a/scripts/run_checkpoint_tests.py +++ b/scripts/run_checkpoint_tests.py @@ -133,9 +133,28 @@ def main(): for test in smoke_tests: rel = os.path.relpath(test, ROOT) print(f"\n--- {rel} ---") - r = run([godot_bin, "--headless", "--path", str(ROOT), "--script", f"res://{rel}"], env=godot_env) - if r.returncode != 0: - godot_ok = False + # smoke_test_network_client.gd needs a separate dedicated + # server process listening on ENet 7777 -- stand one up + # just for that test and tear it down after. + game_server = None + if os.path.basename(rel) == "smoke_test_network_client.gd": + print("(starting scenes/server.tscn for the network client test)") + game_server = subprocess.Popen( + [godot_bin, "--headless", "--path", str(ROOT), "res://scenes/server.tscn"], + env=godot_env, + ) + time.sleep(3) + try: + r = run([godot_bin, "--headless", "--path", str(ROOT), "--script", f"res://{rel}"], env=godot_env) + if r.returncode != 0: + godot_ok = False + finally: + if game_server is not None: + game_server.terminate() + try: + game_server.wait(timeout=10) + except subprocess.TimeoutExpired: + game_server.kill() results["godot smoke tests"] = godot_ok finally: server_proc.terminate()