53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
import takopi.runtime_loader as runtime_loader
|
|
from takopi.config import ConfigError
|
|
from takopi.settings import TakopiSettings
|
|
|
|
|
|
def test_build_runtime_spec_minimal(
|
|
monkeypatch: pytest.MonkeyPatch, tmp_path: Path
|
|
) -> None:
|
|
monkeypatch.setattr(runtime_loader.shutil, "which", lambda _cmd: "/bin/echo")
|
|
settings = TakopiSettings.model_validate(
|
|
{
|
|
"transport": "telegram",
|
|
"watch_config": True,
|
|
"transports": {"telegram": {"bot_token": "token", "chat_id": 123}},
|
|
}
|
|
)
|
|
config_path = tmp_path / "takopi.toml"
|
|
config_path.write_text(
|
|
'transport = "telegram"\n\n[transports.telegram]\n'
|
|
'bot_token = "token"\nchat_id = 123\n',
|
|
encoding="utf-8",
|
|
)
|
|
|
|
spec = runtime_loader.build_runtime_spec(
|
|
settings=settings,
|
|
config_path=config_path,
|
|
)
|
|
|
|
assert spec.router.default_engine == settings.default_engine
|
|
runtime = spec.to_runtime(config_path=config_path)
|
|
assert runtime.default_engine == settings.default_engine
|
|
assert runtime.watch_config is True
|
|
|
|
|
|
def test_resolve_default_engine_unknown(tmp_path: Path) -> None:
|
|
settings = TakopiSettings.model_validate(
|
|
{
|
|
"transport": "telegram",
|
|
"transports": {"telegram": {"bot_token": "token", "chat_id": 123}},
|
|
}
|
|
)
|
|
with pytest.raises(ConfigError, match="Unknown default engine"):
|
|
runtime_loader.resolve_default_engine(
|
|
override="unknown",
|
|
settings=settings,
|
|
config_path=tmp_path / "takopi.toml",
|
|
engine_ids=["codex"],
|
|
)
|