71 lines
2.4 KiB
Python
71 lines
2.4 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from takopi import engines, onboarding
|
|
|
|
|
|
def test_check_setup_marks_missing_codex(monkeypatch, tmp_path: Path) -> None:
|
|
backend = engines.get_backend("codex")
|
|
monkeypatch.setattr(onboarding.shutil, "which", lambda _name: None)
|
|
monkeypatch.setattr(
|
|
onboarding,
|
|
"load_telegram_config",
|
|
lambda: ({"bot_token": "token", "chat_id": 123}, tmp_path / "takopi.toml"),
|
|
)
|
|
|
|
result = onboarding.check_setup(backend)
|
|
|
|
titles = {issue.title for issue in result.issues}
|
|
assert "install codex" in titles
|
|
assert "create a config" not in titles
|
|
assert result.ok is False
|
|
|
|
|
|
def test_check_setup_marks_missing_config(monkeypatch) -> None:
|
|
backend = engines.get_backend("codex")
|
|
monkeypatch.setattr(onboarding.shutil, "which", lambda _name: "/usr/bin/codex")
|
|
|
|
def _raise() -> None:
|
|
raise onboarding.ConfigError("Missing config file")
|
|
|
|
monkeypatch.setattr(onboarding, "load_telegram_config", _raise)
|
|
|
|
result = onboarding.check_setup(backend)
|
|
|
|
titles = {issue.title for issue in result.issues}
|
|
assert "create a config" in titles
|
|
assert result.config_path == onboarding.HOME_CONFIG_PATH
|
|
|
|
|
|
def test_check_setup_marks_invalid_chat_id(monkeypatch, tmp_path: Path) -> None:
|
|
backend = engines.get_backend("codex")
|
|
monkeypatch.setattr(onboarding.shutil, "which", lambda _name: "/usr/bin/codex")
|
|
monkeypatch.setattr(
|
|
onboarding,
|
|
"load_telegram_config",
|
|
lambda: ({"bot_token": "token", "chat_id": "123"}, tmp_path / "takopi.toml"),
|
|
)
|
|
|
|
result = onboarding.check_setup(backend)
|
|
|
|
titles = {issue.title for issue in result.issues}
|
|
assert "create a config" in titles
|
|
|
|
|
|
def test_onboarding_prefers_new_config_path_for_legacy_file(monkeypatch) -> None:
|
|
backend = engines.get_backend("codex")
|
|
monkeypatch.setattr(onboarding.shutil, "which", lambda _name: "/usr/bin/codex")
|
|
legacy_path = Path.home() / ".codex" / "takopi.toml"
|
|
monkeypatch.setattr(
|
|
onboarding,
|
|
"load_telegram_config",
|
|
lambda: ({"bot_token": "token", "chat_id": "123"}, legacy_path),
|
|
)
|
|
|
|
result = onboarding.check_setup(backend)
|
|
|
|
issue = next(issue for issue in result.issues if issue.title == "create a config")
|
|
assert any("~/.takopi/takopi.toml" in line for line in issue.lines)
|
|
assert all(".codex/takopi.toml" not in line for line in issue.lines)
|