Files

87 lines
3.7 KiB
Python

import json
from pathlib import Path
import pytest
import yuqei_sdk.scene_review_coverage as coverage_module
def test_real_catalog_has_bounded_batch_a_and_complete_batch_b_coverage():
catalog = json.loads((Path(coverage_module.__file__).with_name("scene_review_coverage.json")).read_text(encoding="utf-8"))
entries = list(catalog["entries"].values())
assert len(entries) == 30
assert sorted(len(entry["cases"]) for entry in entries).count(1) == 12
assert sorted(len(entry["cases"]) for entry in entries).count(3) == 18
for entry in entries:
assert len(entry["passed_variants"]) == len(entry["cases"])
assert entry["complete"] is (len(entry["cases"]) == 3)
def test_catalog_embeds_variant_and_hash_provenance_without_external_evidence():
catalog_path = Path(coverage_module.__file__).with_name("scene_review_coverage.json")
catalog = json.loads(catalog_path.read_text(encoding="utf-8"))
expected_variants = {"normal", "missing-key-fact", "opposite-adversarial"}
def is_sha256(value):
return (
isinstance(value, str)
and len(value) == 64
and set(value) <= set("0123456789abcdef")
)
assert catalog["schema_version"] == "scene-review-coverage-catalog.v1"
assert len(catalog["entries"]) == 30
for template_id, entry in catalog["entries"].items():
assert entry["template_id"] == template_id
assert set(entry["required_variants"]) == expected_variants
assert set(entry["passed_variants"]) | set(entry["missing_variants"]) == expected_variants
assert set(entry["passed_variants"]).isdisjoint(entry["missing_variants"])
assert entry["source_hashes"]
assert all(is_sha256(value) for value in entry["source_hashes"].values())
assert is_sha256(entry["template_content_sha256"])
for prompt_key in ("draft_prompt", "review_prompt"):
assert is_sha256(entry[prompt_key]["content_sha256"])
for case in entry["cases"]:
assert case["variant"] in entry["passed_variants"]
for hash_key in (
"request_sha256",
"artifact_raw_sha256",
"artifact_canonical_sha256",
"template_content_sha256",
):
assert is_sha256(case[hash_key])
for prompt_key in ("draft_prompt", "review_prompt"):
assert is_sha256(case[prompt_key]["content_sha256"])
def test_lookup_returns_defensive_copies():
first = coverage_module.scene_review_coverage("TPL-TRANSPORT-ORDINARY-001")
assert first is not None
first["cases"].clear()
second = coverage_module.scene_review_coverage("TPL-TRANSPORT-ORDINARY-001")
assert second is not None and second["cases"]
assert coverage_module.scene_review_coverage("unknown") is None
def test_catalog_rejects_tampering(monkeypatch):
class FakeResource:
def joinpath(self, _name): return self
def read_bytes(self): return b'{"entries":{}}\n'
monkeypatch.setattr(coverage_module, "_CATALOG", None)
monkeypatch.setattr(coverage_module, "files", lambda _package: FakeResource())
with pytest.raises(RuntimeError, match="integrity check failed"):
coverage_module.scene_review_coverage("anything")
def test_catalog_integrity_ignores_lf_vs_crlf(monkeypatch):
raw = Path(coverage_module.__file__).with_name("scene_review_coverage.json").read_bytes()
class FakeResource:
def joinpath(self, _name): return self
def read_bytes(self): return raw.replace(b"\n", b"\r\n")
monkeypatch.setattr(coverage_module, "_CATALOG", None)
monkeypatch.setattr(coverage_module, "files", lambda _package: FakeResource())
assert coverage_module.scene_review_coverage("TPL-TRANSPORT-ORDINARY-001") is not None