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