vla / tests /test_smolvla_runtime.py
anhtld's picture
Initial commit: DoVLA-CIL codebase (h=16 breakthrough) (part 2)
20c251e verified
Raw
History Blame Contribute Delete
3.09 kB
from __future__ import annotations
import sys
import types
from collections import deque
from pathlib import Path
from dovla_cil.eval.smolvla_runtime import (
ensure_lazy_policies_namespace,
ensure_policy_utils_shim,
ensure_train_config_type_shim,
)
def test_lazy_smolvla_namespace_points_to_installed_policy_directory(
tmp_path: Path,
monkeypatch,
) -> None:
package_dir = tmp_path / "lerobot"
policies_dir = package_dir / "policies"
policies_dir.mkdir(parents=True)
module = types.ModuleType("lerobot")
module.__file__ = str(package_dir / "__init__.py")
monkeypatch.delitem(sys.modules, "lerobot.policies", raising=False)
namespace = ensure_lazy_policies_namespace(module)
assert namespace.__path__ == [str(policies_dir)]
assert namespace.__spec__ is not None
assert namespace.__spec__.submodule_search_locations == [str(policies_dir)]
assert sys.modules["lerobot.policies"] is namespace
def test_lazy_smolvla_namespace_is_idempotent(tmp_path: Path, monkeypatch) -> None:
package_dir = tmp_path / "lerobot"
(package_dir / "policies").mkdir(parents=True)
module = types.ModuleType("lerobot")
module.__file__ = str(package_dir / "__init__.py")
monkeypatch.delitem(sys.modules, "lerobot.policies", raising=False)
first = ensure_lazy_policies_namespace(module)
second = ensure_lazy_policies_namespace(module)
assert first is second
def test_train_config_shim_exposes_only_required_type(monkeypatch) -> None:
configs = types.ModuleType("lerobot.configs")
configs.__path__ = []
monkeypatch.setitem(sys.modules, "lerobot.configs", configs)
monkeypatch.delitem(sys.modules, "lerobot.configs.train", raising=False)
module = ensure_train_config_type_shim()
assert module.__dovla_type_only_shim__ is True
assert module.TrainPipelineConfig.__module__ == "lerobot.configs.train"
assert configs.train is module
def test_train_config_shim_preserves_real_import(monkeypatch) -> None:
real_module = types.ModuleType("lerobot.configs.train")
monkeypatch.setitem(sys.modules, "lerobot.configs.train", real_module)
assert ensure_train_config_type_shim() is real_module
def test_policy_utils_shim_populates_and_advances_queues(monkeypatch) -> None:
monkeypatch.delitem(sys.modules, "lerobot.policies.utils", raising=False)
module = ensure_policy_utils_shim()
queues = {"observation": deque(maxlen=2), "action": deque(maxlen=2)}
result = module.populate_queues(
queues,
{"observation": "first", "action": "excluded"},
exclude_keys=["action"],
)
module.populate_queues(queues, {"observation": "second"})
assert result is queues
assert list(queues["observation"]) == ["first", "second"]
assert list(queues["action"]) == []
def test_policy_utils_shim_preserves_real_import(monkeypatch) -> None:
real_module = types.ModuleType("lerobot.policies.utils")
monkeypatch.setitem(sys.modules, "lerobot.policies.utils", real_module)
assert ensure_policy_utils_shim() is real_module