File size: 1,721 Bytes
2d06408
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
"""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()