Files
hermes-webui/tests/test_issue3958_reasoning_post_session_context.py
T

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