40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
from __future__ import annotations
|
|
|
|
import json
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
def test_validate_dotnet_migration_roadmap_passes() -> None:
|
|
root = Path(__file__).resolve().parents[2]
|
|
proc = subprocess.run(
|
|
[sys.executable, str(root / "tools" / "validate_dotnet_migration_roadmap_v1.py")],
|
|
cwd=root,
|
|
capture_output=True,
|
|
text=True,
|
|
)
|
|
assert proc.returncode == 0, proc.stdout + proc.stderr
|
|
payload = json.loads(proc.stdout)
|
|
assert payload["gate"] == "PASS"
|
|
assert payload["formula_id"] == "WBS_10_DOTNET_MIGRATION_ROADMAP_V1"
|
|
|
|
|
|
def test_validate_dotnet_migration_roadmap_reports_missing_alignment() -> None:
|
|
root = Path(__file__).resolve().parents[2]
|
|
temp = root / "Temp" / "test_wbs_10_roadmap_bad.yaml"
|
|
temp.write_text(
|
|
"formula_id: WBS_10_DOTNET_MIGRATION_ROADMAP_V1\nroadmap:\n phase_name: WBS-10 .NET 엔진 고도화\n tracks: []\n",
|
|
encoding="utf-8",
|
|
)
|
|
proc = subprocess.run(
|
|
[sys.executable, str(root / "tools" / "validate_dotnet_migration_roadmap_v1.py"), "--roadmap", str(temp)],
|
|
cwd=root,
|
|
capture_output=True,
|
|
text=True,
|
|
)
|
|
assert proc.returncode != 0
|
|
payload = json.loads(proc.stdout)
|
|
assert payload["gate"] == "FAIL"
|
|
assert "alignment.spec_task_map" in payload["missing"]
|