| """Fast regression tests for benchmark manifest validation.""" |
|
|
| from __future__ import annotations |
|
|
| import csv |
| import sys |
| import tempfile |
| from pathlib import Path |
|
|
| PROJECT_DIR = Path(__file__).resolve().parents[1] |
| sys.path.insert(0, str(PROJECT_DIR / "tools")) |
|
|
| from evaluate_restoration import load_manifest, validate_files |
|
|
|
|
| def main() -> None: |
| with tempfile.TemporaryDirectory() as temp_dir: |
| root = Path(temp_dir) |
| input_dir = root / "inputs" |
| reference_dir = root / "references" |
| input_dir.mkdir() |
| reference_dir.mkdir() |
| (input_dir / "sample.jpg").write_bytes(b"test") |
| (reference_dir / "sample.jpg").write_bytes(b"test") |
| manifest = root / "manifest.csv" |
| with manifest.open("w", encoding="utf-8", newline="") as handle: |
| writer = csv.DictWriter(handle, fieldnames=["id", "input_path", "reference_path", "category", "notes"]) |
| writer.writeheader() |
| writer.writerow({ |
| "id": "sample_001", |
| "input_path": "inputs/sample.jpg", |
| "reference_path": "references/sample.jpg", |
| "category": "jpeg_compression", |
| "notes": "fixture", |
| }) |
|
|
| samples = load_manifest(manifest) |
| assert len(samples) == 1 |
| assert validate_files(samples) == (1, 1) |
|
|
| (input_dir / "sample.jpg").unlink() |
| try: |
| validate_files(samples) |
| except ValueError as error: |
| assert "Missing input" in str(error) |
| else: |
| raise AssertionError("Missing benchmark input must fail validation.") |
|
|
| print("SUCCESS: benchmark manifest workflow validated.") |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|