47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
from __future__ import annotations
|
|
|
|
import importlib.util
|
|
from pathlib import Path
|
|
import sys
|
|
|
|
|
|
def _load_case_module():
|
|
scripts_dir = Path(__file__).resolve().parents[2] / "scripts"
|
|
if str(scripts_dir) not in sys.path:
|
|
sys.path.insert(0, str(scripts_dir))
|
|
file_path = scripts_dir / "auto_test_domains" / "project_detail_data_case.py"
|
|
spec = importlib.util.spec_from_file_location("project_detail_data_case_for_test", file_path)
|
|
if spec is None or spec.loader is None:
|
|
raise RuntimeError(f"Unable to load module from {file_path}")
|
|
module = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(module)
|
|
return module
|
|
|
|
|
|
def test_project_detail_case_excludes_production_from_unified_rounds(monkeypatch, tmp_path: Path) -> None:
|
|
module = _load_case_module()
|
|
recorded_rounds: list[str] = []
|
|
|
|
def _fake_run_pipeline_round(**kwargs):
|
|
recorded_rounds.append(kwargs["round_name"])
|
|
return {"name": kwargs["round_name"], "passed": True, "issues": []}
|
|
|
|
def _fake_build_domain_report(**kwargs):
|
|
return kwargs
|
|
|
|
monkeypatch.setattr(module, "run_pipeline_round", _fake_run_pipeline_round)
|
|
monkeypatch.setattr(module, "build_domain_report", _fake_build_domain_report)
|
|
|
|
report = module.run_case(config={"project_root": str(tmp_path)}, report_root=tmp_path)
|
|
|
|
assert recorded_rounds == [
|
|
"round_1_create",
|
|
"round_2_update",
|
|
"round_3_plan_construction_create",
|
|
"round_5_ensure_production_push",
|
|
"round_6_climb_production_push",
|
|
"round_7_challenge_production_push",
|
|
]
|
|
assert "production" in report["description"]
|
|
assert "不混入本组统一回归" in report["description"]
|