54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
"""Tests for CLI interactive UI backend dispatch."""
|
|
|
|
from EvoScientist.cli.interactive import cmd_interactive
|
|
|
|
|
|
def test_cmd_interactive_dispatches_to_textual(monkeypatch):
|
|
captured: dict[str, object] = {}
|
|
|
|
def _fake_resolve_ui_backend(value, *, warn_fallback=False): # noqa: ANN001
|
|
captured["resolved_input"] = value
|
|
captured["warn_fallback"] = warn_fallback
|
|
return "tui"
|
|
|
|
def _fake_run_textual_interactive(**kwargs): # noqa: ANN003
|
|
captured["kwargs"] = kwargs
|
|
|
|
monkeypatch.setattr(
|
|
"EvoScientist.cli.interactive.resolve_ui_backend",
|
|
_fake_resolve_ui_backend,
|
|
)
|
|
monkeypatch.setattr(
|
|
"EvoScientist.cli.interactive.run_textual_interactive",
|
|
_fake_run_textual_interactive,
|
|
)
|
|
|
|
cmd_interactive(
|
|
show_thinking=True,
|
|
channel_send_thinking=True,
|
|
workspace_dir="/tmp/workspace",
|
|
workspace_fixed=True,
|
|
mode="daemon",
|
|
model="demo-model",
|
|
provider="demo-provider",
|
|
run_name="demo-run",
|
|
thread_id="thread-1",
|
|
ui_backend="tui",
|
|
)
|
|
|
|
assert captured["resolved_input"] == "tui"
|
|
assert captured["warn_fallback"] is True
|
|
|
|
kwargs = captured["kwargs"]
|
|
assert isinstance(kwargs, dict)
|
|
assert kwargs["workspace_dir"] == "/tmp/workspace"
|
|
assert kwargs["workspace_fixed"] is True
|
|
assert kwargs["mode"] == "daemon"
|
|
assert kwargs["model"] == "demo-model"
|
|
assert kwargs["provider"] == "demo-provider"
|
|
assert kwargs["run_name"] == "demo-run"
|
|
assert kwargs["thread_id"] == "thread-1"
|
|
assert kwargs["channel_send_thinking"] is True
|
|
assert callable(kwargs["load_agent"])
|
|
assert callable(kwargs["create_session_workspace"])
|