Files
operating-room-monitor-server/backend/tests/test_reference_bundle_runtime.py
2026-05-27 13:48:27 +08:00

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)