import json from pathlib import Path from typing import Any, Callable import pytest ROOT = Path(__file__).resolve().parents[1] DATA_PATH = ROOT / "benchmarks" / "source_review.json" def _renderer_api() -> tuple[Callable[[Path], dict[str, Any]], Callable[..., None]]: try: from benchmarks.render_chart import load_benchmark, render_chart except ModuleNotFoundError: pytest.fail("benchmarks.render_chart is not implemented") return load_benchmark, render_chart def test_source_review_contract_is_complete() -> None: load_benchmark, _ = _renderer_api() raw = json.loads(DATA_PATH.read_text(encoding="utf-8")) data = load_benchmark(DATA_PATH) assert data == raw assert data["schema_version"] == "1.0" assert sum(item["weight"] for item in data["rubric"]) == 100 assert data["evidence_boundary"] == "source_review_not_shared_live_run" projects = data["projects"] repositories = [item["repository"] for item in projects] assert len(repositories) == len(set(repositories)) assert "U-C4N/Autocad-MCP" in repositories assert "varavista/autocad-mcp" in repositories assert "beiming183-cloud/AutoCAD-MCP" in repositories assert "AnCode666/multiCAD-mcp" in repositories assert "puran-water/autocad-mcp" in repositories assert "NCO-1986/AutoCAD_mcp" in repositories assert all(0 <= item["score"] <= 100 for item in projects) assert all(item["evidence_grade"] in {"A", "B", "C"} for item in projects) def test_load_benchmark_rejects_duplicate_repositories(tmp_path: Path) -> None: load_benchmark, _ = _renderer_api() payload = json.loads(DATA_PATH.read_text(encoding="utf-8")) payload["projects"].append(payload["projects"][0].copy()) invalid = tmp_path / "duplicate.json" invalid.write_text(json.dumps(payload), encoding="utf-8") with pytest.raises(ValueError, match="duplicate repository"): load_benchmark(invalid) def test_render_chart_writes_readable_svg(tmp_path: Path) -> None: load_benchmark, render_chart = _renderer_api() pytest.importorskip("matplotlib") data = load_benchmark(DATA_PATH) output = tmp_path / "benchmark.svg" render_chart(data, output) svg = output.read_text(encoding="utf-8") assert svg.lstrip().startswith("