Files
odysseus/tests/test_cookbook_tool_dry_run.py
T

65 lines
1.6 KiB
Python

import asyncio
import json
import httpx
from src.tools.cookbook import do_adopt_served_model, do_serve_preset
class _Response:
def __init__(self, payload):
self._payload = payload
def json(self):
return self._payload
class _Client:
def __init__(self, payload, *args, **kwargs):
self.payload = payload
async def __aenter__(self):
return self
async def __aexit__(self, *args):
return None
async def get(self, *args, **kwargs):
return _Response(self.payload)
def test_adopt_served_model_dry_run_does_not_touch_tmux():
result = asyncio.run(do_adopt_served_model(json.dumps({
"tmux_session": "audit-external",
"model": "audit/tiny-model",
"port": 18092,
"dry_run": True,
}), owner="alice"))
assert result["exit_code"] == 0
assert result["dry_run"] is True
assert result["tmux_session"] == "audit-external"
assert "No state was changed" in result["output"]
def test_serve_preset_dry_run_resolves_but_does_not_launch(monkeypatch):
state = {
"presets": [{
"name": "Tiny Local",
"model": "audit/tiny-model",
"cmd": "llama-server -m tiny.gguf --port 18092",
"host": "",
}]
}
monkeypatch.setattr(httpx, "AsyncClient", lambda *a, **kw: _Client(state))
result = asyncio.run(do_serve_preset(
'{"name":"Tiny Local","dry_run":true}',
owner="alice",
))
assert result["exit_code"] == 0
assert result["dry_run"] is True
assert result["preset"] == "Tiny Local"
assert "No server was started" in result["output"]