chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
"""CLI tests for `opensquilla agents`."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
from typer.testing import CliRunner
|
||||
|
||||
from opensquilla.cli.main import app
|
||||
from opensquilla.onboarding.config_store import load_config
|
||||
|
||||
runner = CliRunner()
|
||||
|
||||
|
||||
def _setenv(monkeypatch, tmp_path: Path) -> Path:
|
||||
target = tmp_path / "c.toml"
|
||||
monkeypatch.setenv("OPENSQUILLA_GATEWAY_CONFIG_PATH", str(target))
|
||||
return target
|
||||
|
||||
|
||||
def test_agents_list_json_includes_builtin_main(tmp_path, monkeypatch):
|
||||
_setenv(monkeypatch, tmp_path)
|
||||
|
||||
result = runner.invoke(app, ["agents", "list", "--json"])
|
||||
|
||||
assert result.exit_code == 0, result.stdout
|
||||
payload = json.loads(result.stdout)
|
||||
assert payload[0]["id"] == "main"
|
||||
assert payload[0]["isBuiltin"] is True
|
||||
|
||||
|
||||
def test_agents_add_json_persists_config_entry(tmp_path, monkeypatch):
|
||||
target = _setenv(monkeypatch, tmp_path)
|
||||
|
||||
result = runner.invoke(app, ["agents", "add", "ops", "--model", "openai/test", "--json"])
|
||||
|
||||
assert result.exit_code == 0, result.stdout
|
||||
payload = json.loads(result.stdout)
|
||||
assert payload["id"] == "ops"
|
||||
assert payload["model"] == "openai/test"
|
||||
cfg = load_config(target)
|
||||
assert [entry.id for entry in cfg.agents] == ["ops"]
|
||||
text = target.read_text(encoding="utf-8")
|
||||
assert "agents = [" in text
|
||||
assert 'id = "ops"' in text
|
||||
|
||||
|
||||
def test_agents_add_duplicate_fails(tmp_path, monkeypatch):
|
||||
_setenv(monkeypatch, tmp_path)
|
||||
first = runner.invoke(app, ["agents", "add", "ops", "--json"])
|
||||
assert first.exit_code == 0, first.stdout
|
||||
|
||||
result = runner.invoke(app, ["agents", "add", "ops", "--json"])
|
||||
|
||||
assert result.exit_code == 2
|
||||
combined = result.stdout + (result.stderr or "")
|
||||
assert "already exists" in combined
|
||||
|
||||
|
||||
def test_agents_delete_main_rejected(tmp_path, monkeypatch):
|
||||
_setenv(monkeypatch, tmp_path)
|
||||
|
||||
result = runner.invoke(app, ["agents", "delete", "main", "--force", "--json"])
|
||||
|
||||
assert result.exit_code == 2
|
||||
combined = result.stdout + (result.stderr or "")
|
||||
assert "builtin agent" in combined
|
||||
|
||||
|
||||
def test_agents_delete_force_json_removes_config_entry(tmp_path, monkeypatch):
|
||||
target = _setenv(monkeypatch, tmp_path)
|
||||
add_result = runner.invoke(app, ["agents", "add", "ops", "--json"])
|
||||
assert add_result.exit_code == 0, add_result.stdout
|
||||
|
||||
result = runner.invoke(app, ["agents", "delete", "ops", "--force", "--json"])
|
||||
|
||||
assert result.exit_code == 0, result.stdout
|
||||
payload = json.loads(result.stdout)
|
||||
assert payload == {
|
||||
"id": "ops",
|
||||
"deleted": True,
|
||||
"workspaceDeleted": False,
|
||||
"stateDeleted": False,
|
||||
}
|
||||
assert load_config(target).agents == []
|
||||
Reference in New Issue
Block a user