"""Run ADAM's test modules in isolated processes for Qt application lifetimes.""" from __future__ import annotations import os from pathlib import Path import subprocess import sys def main() -> int: root = Path(__file__).resolve().parents[1] modules = sorted((root / "tests").glob("test_*.py")) if not modules: print("No test modules were found.") return 1 environment = os.environ.copy() environment.setdefault("QT_QPA_PLATFORM", "offscreen") environment.setdefault("OMP_NUM_THREADS", "2") environment.setdefault("MKL_NUM_THREADS", "2") failed: list[str] = [] for module in modules: print(f"\nRunning {module.name}", flush=True) result = subprocess.run( [sys.executable, "-m", "pytest", str(module), "-q", *sys.argv[1:]], cwd=root, env=environment, check=False, ) if result.returncode: failed.append(module.name) print(f"\n{len(modules) - len(failed)}/{len(modules)} test modules passed.") if failed: print("Failed modules: " + ", ".join(failed)) return int(bool(failed)) if __name__ == "__main__": raise SystemExit(main())