35 lines
1.3 KiB
Python
35 lines
1.3 KiB
Python
from __future__ import annotations
|
|
import pytest
|
|
from src.hot_reloader import HotModule, HotReloader
|
|
|
|
def test_hot_module_dataclass_fields():
|
|
hm = HotModule(
|
|
name="test_module",
|
|
file_path="/path/to/test_module.py",
|
|
state_keys=["attr1", "attr2"],
|
|
delegation_targets=["method_a", "method_b"],
|
|
)
|
|
assert hm.name == "test_module"
|
|
assert hm.file_path == "/path/to/test_module.py"
|
|
assert hm.state_keys == ["attr1", "attr2"]
|
|
assert hm.delegation_targets == ["method_a", "method_b"]
|
|
|
|
def test_hot_reloader_register_and_get():
|
|
HotReloader.HOT_MODULES.clear()
|
|
hm = HotModule(name="test_mod", file_path="/fake/path.py", state_keys=[], delegation_targets=[])
|
|
HotReloader.register(hm)
|
|
assert "test_mod" in HotReloader.HOT_MODULES
|
|
assert HotReloader.HOT_MODULES["test_mod"] is hm
|
|
|
|
def test_hot_reloader_register_duplicate_raises():
|
|
HotReloader.HOT_MODULES.clear()
|
|
hm1 = HotModule(name="dup", file_path="/a.py", state_keys=[], delegation_targets=[])
|
|
HotReloader.register(hm1)
|
|
with pytest.raises(ValueError, match="already registered"):
|
|
HotReloader.register(hm1)
|
|
|
|
def test_hot_reloader_is_error_state():
|
|
HotReloader.HOT_MODULES.clear()
|
|
HotReloader.last_error = None
|
|
HotReloader.is_error_state = False
|
|
assert HotReloader.is_error_state is False |