mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-09-13 03:32:21 +02:00
44 lines
1.7 KiB
Python
44 lines
1.7 KiB
Python
"""Regression test for the task-path endpoint-URL normalization fix.
|
|
|
|
Bug: the task executor passed ``task.endpoint_url`` verbatim to the model HTTP
|
|
call (unlike the chat path, which normalizes via ``build_chat_url``). A bare
|
|
OpenAI-compatible base such as ``http://host:11434/v1`` POSTed to a 404 and the
|
|
run silently reported "The model returned an empty response".
|
|
|
|
The fix routes every resolved task endpoint through ``_normalize_chat_endpoint``.
|
|
"""
|
|
from src.task_scheduler import _normalize_chat_endpoint
|
|
|
|
|
|
def test_bare_v1_base_gets_chat_completions_suffix():
|
|
# The exact failure case: a bare /v1 base must become a full chat URL.
|
|
assert (
|
|
_normalize_chat_endpoint("http://localhost:11434/v1")
|
|
== "http://localhost:11434/v1/chat/completions"
|
|
)
|
|
|
|
|
|
def test_full_chat_url_is_unchanged_idempotent():
|
|
full = "http://localhost:11434/v1/chat/completions"
|
|
assert _normalize_chat_endpoint(full) == full
|
|
# Idempotent under repeated application.
|
|
assert _normalize_chat_endpoint(_normalize_chat_endpoint(full)) == full
|
|
|
|
|
|
def test_native_ollama_url_left_alone():
|
|
# Native Ollama (/api...) has its own downstream normalizer — don't touch it.
|
|
assert _normalize_chat_endpoint("http://localhost:11434/api") == "http://localhost:11434/api"
|
|
assert _normalize_chat_endpoint("http://localhost:11434/api/chat") == "http://localhost:11434/api/chat"
|
|
|
|
|
|
def test_empty_and_none_are_passthrough():
|
|
assert _normalize_chat_endpoint("") == ""
|
|
assert _normalize_chat_endpoint(None) is None
|
|
|
|
|
|
def test_trailing_slash_base_normalized():
|
|
assert (
|
|
_normalize_chat_endpoint("http://localhost:11434/v1/")
|
|
== "http://localhost:11434/v1/chat/completions"
|
|
)
|