76 lines
2.2 KiB
Python
76 lines
2.2 KiB
Python
from pathlib import Path
|
|
import re
|
|
|
|
import api.config as cfg
|
|
import yaml
|
|
|
|
|
|
def read(path):
|
|
return Path(path).read_text(encoding="utf-8")
|
|
|
|
|
|
def test_set_reasoning_effort_returns_status_for_explicit_model(tmp_path, monkeypatch):
|
|
cfgfile = tmp_path / "config.yaml"
|
|
cfgfile.write_text(
|
|
yaml.safe_dump(
|
|
{
|
|
"model": {"default": "gpt-4o", "provider": "openai"},
|
|
"agent": {"reasoning_effort": ""},
|
|
},
|
|
sort_keys=False,
|
|
),
|
|
encoding="utf-8",
|
|
)
|
|
monkeypatch.setattr(cfg, "_get_config_path", lambda: cfgfile)
|
|
monkeypatch.setattr(cfg, "reload_config", lambda: None)
|
|
|
|
seen = {}
|
|
|
|
def fake_resolve(model_id, provider_id=None, base_url=None):
|
|
seen["args"] = (model_id, provider_id, base_url)
|
|
if model_id == "claude-opus-4-7":
|
|
return ["minimal", "low", "medium", "high", "xhigh", "max"]
|
|
return []
|
|
|
|
monkeypatch.setattr(cfg, "resolve_model_reasoning_efforts", fake_resolve)
|
|
|
|
status = cfg.set_reasoning_effort(
|
|
"high",
|
|
model_id="claude-opus-4-7",
|
|
provider_id="anthropic",
|
|
)
|
|
|
|
assert seen["args"] == ("claude-opus-4-7", "anthropic", None)
|
|
assert status["reasoning_effort"] == "high"
|
|
assert status["supported_efforts"] == [
|
|
"minimal",
|
|
"low",
|
|
"medium",
|
|
"high",
|
|
"xhigh",
|
|
"max",
|
|
]
|
|
|
|
|
|
def test_ui_posts_reasoning_context_with_effort():
|
|
src = read("static/ui.js")
|
|
assert "function _reasoningEffortContext()" in src
|
|
assert "new URLSearchParams(_reasoningEffortContext())" in src
|
|
assert "Object.assign({effort:effort},_reasoningEffortContext())" in src
|
|
|
|
|
|
def test_reasoning_post_route_threads_model_context():
|
|
src = read("api/routes.py")
|
|
match = re.search(
|
|
r"if parsed\.path == \"/api/reasoning\":(.*?)return bad\(handler, \"reasoning: must supply 'display' or 'effort'\"\)",
|
|
src,
|
|
re.DOTALL,
|
|
)
|
|
assert match, "The /api/reasoning POST route block must exist"
|
|
body = match.group(1)
|
|
assert 'body.get("model")' in body
|
|
assert 'body.get("provider")' in body
|
|
assert 'set_reasoning_effort(' in body
|
|
assert "model_id=model_id" in body
|
|
assert "provider_id=provider_id" in body
|