wrice's picture
Publish validated 5308666a249a73d8a2dea5d06ac929cbba53c131
312fb3f verified
Raw
History Blame Contribute Delete
1.28 kB
import hashlib
from pathlib import Path
import tempfile
import shutil
from recurrent_sampler_repro.evidence import run_pipeline
def get_project_root() -> Path:
return Path(__file__).resolve().parent.parent
def hash_directory_files(directory: Path) -> dict[str, str]:
file_hashes = {}
for file_path in sorted(directory.rglob("*")):
if file_path.is_file():
rel_path = str(file_path.relative_to(directory))
file_hashes[rel_path] = hashlib.sha256(file_path.read_bytes()).hexdigest()
return file_hashes
def test_evidence_generation_determinism():
project_root = get_project_root()
with tempfile.TemporaryDirectory() as tmp1, tempfile.TemporaryDirectory() as tmp2:
dir1 = Path(tmp1)
dir2 = Path(tmp2)
# Copy vendor files to temp directories
shutil.copytree(project_root / "vendor", dir1 / "vendor")
shutil.copytree(project_root / "vendor", dir2 / "vendor")
# Run pipeline on both
run_pipeline(dir1)
run_pipeline(dir2)
# Compare outputs byte for byte
hashes1 = hash_directory_files(dir1)
hashes2 = hash_directory_files(dir2)
assert hashes1 == hashes2, "Evidence generation outputs are not byte-for-byte deterministic!"