55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
"""Tests for reference bundle runtime helpers (NMS patch without writing bundle)."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
from app.algorithm_runner.reference_bundle_runtime import (
|
|
_reference_nms_source,
|
|
ensure_reference_nms_patch,
|
|
verify_reference_nms_for_subprocess,
|
|
)
|
|
from tests.reference_bundle_fixtures import write_minimal_reference_bundle
|
|
|
|
|
|
def _write_bundle_with_nms(bundle: Path, *, nms_bytes: bytes) -> Path:
|
|
write_minimal_reference_bundle(bundle)
|
|
target = bundle / "code" / "actionformer_release" / "libs" / "utils"
|
|
target.mkdir(parents=True, exist_ok=True)
|
|
nms_path = target / "nms.py"
|
|
nms_path.write_bytes(nms_bytes)
|
|
return nms_path
|
|
|
|
|
|
def test_ensure_reference_nms_patch_injects_without_writing_bundle(tmp_path: Path) -> None:
|
|
bundle = tmp_path / "bundle"
|
|
nms_path = _write_bundle_with_nms(bundle, nms_bytes=b"# stale vendor nms\n")
|
|
|
|
source = _reference_nms_source()
|
|
patched = ensure_reference_nms_patch(bundle)
|
|
assert patched is True
|
|
assert nms_path.read_text(encoding="utf-8") == "# stale vendor nms\n"
|
|
|
|
injected = sys.modules["libs.utils.nms"]
|
|
assert injected.batched_nms is not None
|
|
assert injected.__file__ == str(source)
|
|
|
|
|
|
def test_verify_reference_nms_for_subprocess_raises_when_bundle_stale(tmp_path: Path) -> None:
|
|
bundle = tmp_path / "bundle"
|
|
_write_bundle_with_nms(bundle, nms_bytes=b"# stale vendor nms\n")
|
|
|
|
with pytest.raises(RuntimeError, match="NMS patch is missing"):
|
|
verify_reference_nms_for_subprocess(bundle)
|
|
|
|
|
|
def test_verify_reference_nms_for_subprocess_passes_when_baked(tmp_path: Path) -> None:
|
|
bundle = tmp_path / "bundle"
|
|
source = _reference_nms_source()
|
|
_write_bundle_with_nms(bundle, nms_bytes=source.read_bytes())
|
|
|
|
verify_reference_nms_for_subprocess(bundle)
|