#!/usr/bin/env python3 from __future__ import annotations import argparse import os from pathlib import Path import shutil import subprocess ROOT = Path(__file__).resolve().parents[4] SOURCE = ROOT / "Source/VoxelForge/Private/VoxelWorld.cpp" HEADER_DIR = ROOT / "Source/VoxelForge/Private" TEST_SOURCE = Path(__file__).with_name("TestStreamingAdmissionOrder.cpp") def main() -> int: parser = argparse.ArgumentParser() parser.add_argument("--out", type=Path, required=True) args = parser.parse_args() output = args.out.resolve() output.mkdir(parents=True, exist_ok=True) source = SOURCE.read_text(encoding="utf-8") required = ( "VoxelStreamingAdmissionOrder::StableSortCandidates(", "LevelTiles.GetData(), LevelTiles.GetData() + LevelTiles.Num()", "VoxelStreamingAdmissionOrder::AdmitInOrder(LevelTiles", ) if any(token not in source for token in required): raise SystemExit("VoxelWorld.cpp is not using the tested sort/admission helpers") if ("LevelSubmissionCount" in source or "LevelTiles.SetNum" in source or "std::partial_sort(" in source): raise SystemExit("pass-start truncation returned to the production scheduler") compiler = os.environ.get("CXX") or shutil.which("clang++-19") or shutil.which("clang++") if not compiler: raise SystemExit("clang++ is required for the streaming admission regression") executable = output / "StreamingAdmissionOrderTest" build_log = output / "streaming-admission-order-build.log" run_log = output / "streaming-admission-order.log" command = [compiler, "-std=c++20", "-O1", "-Wall", "-Wextra", "-Werror", f"-I{HEADER_DIR}", str(TEST_SOURCE), "-o", str(executable)] built = subprocess.run(command, cwd=ROOT, text=True, capture_output=True, check=False) build_log.write_text(built.stdout + built.stderr, encoding="utf-8") if built.returncode != 0: raise SystemExit(f"admission regression compile failed; see {build_log}") ran = subprocess.run([str(executable)], cwd=ROOT, text=True, capture_output=True, check=False) run_log.write_text(ran.stdout + ran.stderr, encoding="utf-8") if ran.returncode != 0: raise SystemExit(f"admission regression failed; see {run_log}") print(ran.stdout.strip()) print(f"[StreamingAdmissionOrder] production_source_guard=PASS build_log={build_log}") return 0 if __name__ == "__main__": raise SystemExit(main())