2026-08-06 18:15:14 +08:00
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
|
|
import subprocess
|
|
|
|
|
import sys
|
|
|
|
|
import os
|
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROJECT_ROOT = Path(__file__).resolve().parent.parent
|
|
|
|
|
SCRIPT_DIR = PROJECT_ROOT / "scripts"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CASES: tuple[tuple[str, tuple[str, ...]], ...] = (
|
|
|
|
|
(
|
2026-08-10 14:56:50 +08:00
|
|
|
"Edge fillet/chamfer plus existing fillet/chamfer rebuild checks",
|
2026-08-06 18:15:14 +08:00
|
|
|
("verify_edge_round_chamfer.py",),
|
|
|
|
|
),
|
|
|
|
|
(
|
|
|
|
|
"Property editor exposes round/chamfer actions without generic Face leakage",
|
|
|
|
|
("verify_property_editor_specs.py",),
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main() -> int:
|
|
|
|
|
env = os.environ.copy()
|
|
|
|
|
env.setdefault("PYTHONIOENCODING", "utf-8")
|
|
|
|
|
env.setdefault("PYTHONUTF8", "1")
|
|
|
|
|
for index, (label, command) in enumerate(CASES, start=1):
|
|
|
|
|
print(f"\n[{index}/{len(CASES)}] {label}", flush=True)
|
|
|
|
|
subprocess.run(
|
|
|
|
|
(sys.executable, str(SCRIPT_DIR / command[0]), *command[1:]),
|
|
|
|
|
cwd=PROJECT_ROOT,
|
|
|
|
|
env=env,
|
|
|
|
|
check=True,
|
|
|
|
|
)
|
|
|
|
|
print("\nRound/chamfer edit suite passed.", flush=True)
|
|
|
|
|
return 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
raise SystemExit(main())
|