import asyncio from config_manager.v2 import ConfigManagerV2, ManagementServerSettings class ReloadApp(ConfigManagerV2): DEFAULT_UPDATE_INTERVAL = 0.05 DEFAULT_WORK_INTERVAL = 0.2 def execute(self) -> None: return def test_invalid_config_keeps_last_valid(tmp_path): async def scenario() -> None: cfg = tmp_path / "config.yaml" cfg.write_text("log: {}\n", encoding="utf-8") app = ReloadApp(str(cfg), management_settings=ManagementServerSettings(enabled=False)) runner = asyncio.create_task(app.start()) await asyncio.sleep(0.12) assert app.work_interval == 0.2 assert app.update_interval == 0.05 cfg.write_text("work_interval: [broken\n", encoding="utf-8") await asyncio.sleep(0.15) assert app.work_interval == 0.2 assert app.update_interval == 0.05 assert isinstance(app.config, dict) await app.stop() await runner asyncio.run(scenario())