| from __future__ import annotations |
|
|
| import os |
| import subprocess |
| import sys |
| from pathlib import Path |
|
|
| import pytest |
|
|
| from autocad_bench.bundle import ( |
| BUNDLE_FILENAME, |
| BUNDLE_VERSION, |
| BundleError, |
| export_bundle, |
| validate_bundle, |
| ) |
| from autocad_bench.common.paths import BENCHMARK_ROOT |
| from autocad_bench.common.runtime_contract import DEFAULT_EVALUATOR_VERSION |
| from autocad_bench.tasks.manifest import load_manifest |
|
|
|
|
| def test_run_ready_bundle_is_portable_allowlisted_and_integrity_bound( |
| tmp_path: Path, |
| ) -> None: |
| output = tmp_path / "bundle" |
| exported = export_bundle( |
| output, |
| evaluator_versions=(DEFAULT_EVALUATOR_VERSION,), |
| ) |
|
|
| assert exported.bundle_version == BUNDLE_VERSION |
| assert exported.task_count == 50 |
| assert exported.evaluator_versions == (DEFAULT_EVALUATOR_VERSION,) |
| assert len(exported.files) == 204 |
| assert (output / BUNDLE_FILENAME).is_file() |
| assert len(load_manifest(root=output)) == 50 |
| assert all(not entry.path.startswith("configs/") for entry in exported.files) |
| assert all(".env" not in entry.path for entry in exported.files) |
|
|
| validated = validate_bundle(output) |
| assert validated == exported |
|
|
| subprocess_result = subprocess.run( |
| [ |
| sys.executable, |
| "-c", |
| ( |
| "from autocad_bench.tasks.manifest import " |
| "BENCHMARK_ROOT, load_manifest; " |
| "print(BENCHMARK_ROOT); print(len(load_manifest()))" |
| ), |
| ], |
| cwd=tmp_path, |
| env={**os.environ, "AUTOCAD_BENCH_ROOT": str(output)}, |
| check=True, |
| capture_output=True, |
| text=True, |
| ) |
| assert subprocess_result.stdout.splitlines() == [str(output), "50"] |
|
|
| manifest_path = output / "tasks" / "manifest.jsonl" |
| original = manifest_path.read_bytes() |
| manifest_path.write_bytes(original + b"\n") |
| with pytest.raises(BundleError, match="size changed"): |
| validate_bundle(output) |
| manifest_path.write_bytes(original) |
|
|
| unexpected = output / "credentials.env" |
| unexpected.write_text("SECRET=not-allowed\n") |
| with pytest.raises(BundleError, match="unexpected=.*credentials.env"): |
| validate_bundle(output) |
|
|
|
|
| def test_bundle_export_refuses_to_overlay_an_existing_directory( |
| tmp_path: Path, |
| ) -> None: |
| output = tmp_path / "existing" |
| output.mkdir() |
|
|
| with pytest.raises(BundleError, match="already exists"): |
| export_bundle(output, source_root=BENCHMARK_ROOT) |
|
|