refactor: simplify runtime, config, and telegram (#85)
This commit is contained in:
@@ -4,8 +4,8 @@ import anyio
|
||||
import pytest
|
||||
|
||||
import takopi.config_watch as config_watch
|
||||
from takopi.config_watch import ConfigReload, _config_status, watch_config
|
||||
from takopi.config import empty_projects_config
|
||||
from takopi.config_watch import ConfigReload, config_status, watch_config
|
||||
from takopi.config import ProjectsConfig
|
||||
from takopi.router import AutoRouter, RunnerEntry
|
||||
from takopi.runtime_loader import RuntimeSpec
|
||||
from takopi.runners.mock import Return, ScriptRunner
|
||||
@@ -15,19 +15,23 @@ from takopi.transport_runtime import TransportRuntime
|
||||
|
||||
def test_config_status_variants(tmp_path: Path) -> None:
|
||||
missing = tmp_path / "missing.toml"
|
||||
status, signature = _config_status(missing)
|
||||
status, signature = config_status(missing)
|
||||
assert status == "missing"
|
||||
assert signature is None
|
||||
|
||||
directory = tmp_path / "config.d"
|
||||
directory.mkdir()
|
||||
status, signature = _config_status(directory)
|
||||
status, signature = config_status(directory)
|
||||
assert status == "invalid"
|
||||
assert signature is None
|
||||
|
||||
config_file = tmp_path / "takopi.toml"
|
||||
config_file.write_text('transport = "telegram"\n', encoding="utf-8")
|
||||
status, signature = _config_status(config_file)
|
||||
config_file.write_text(
|
||||
'transport = "telegram"\n\n[transports.telegram]\n'
|
||||
'bot_token = "token"\nchat_id = 123\n',
|
||||
encoding="utf-8",
|
||||
)
|
||||
status, signature = config_status(config_file)
|
||||
assert status == "ok"
|
||||
assert signature is not None
|
||||
|
||||
@@ -47,7 +51,7 @@ async def test_watch_config_applies_runtime(
|
||||
)
|
||||
runtime = TransportRuntime(
|
||||
router=router,
|
||||
projects=empty_projects_config(),
|
||||
projects=ProjectsConfig(projects={}, default_project=None),
|
||||
config_path=resolved_path,
|
||||
)
|
||||
|
||||
@@ -58,12 +62,17 @@ async def test_watch_config_applies_runtime(
|
||||
)
|
||||
new_spec = RuntimeSpec(
|
||||
router=new_router,
|
||||
projects=empty_projects_config(),
|
||||
projects=ProjectsConfig(projects={}, default_project=None),
|
||||
allowlist=None,
|
||||
plugin_configs=None,
|
||||
)
|
||||
reload = ConfigReload(
|
||||
settings=TakopiSettings.model_validate({"transport": "telegram"}),
|
||||
settings=TakopiSettings.model_validate(
|
||||
{
|
||||
"transport": "telegram",
|
||||
"transports": {"telegram": {"bot_token": "token", "chat_id": 123}},
|
||||
}
|
||||
),
|
||||
runtime_spec=new_spec,
|
||||
config_path=resolved_path,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user