43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
from types import SimpleNamespace
|
|
|
|
import pytest
|
|
|
|
from code_agent import OpenAICompatibleGenerator
|
|
|
|
|
|
class FakeCompletions:
|
|
def __init__(self, content):
|
|
self.content = content
|
|
self.kwargs = None
|
|
|
|
def create(self, **kwargs):
|
|
self.kwargs = kwargs
|
|
message = SimpleNamespace(content=self.content)
|
|
return SimpleNamespace(choices=[SimpleNamespace(message=message)])
|
|
|
|
|
|
def test_openai_backend_builds_non_streaming_request():
|
|
completions = FakeCompletions("```python\ndef solve():\n return 1\n```")
|
|
client = SimpleNamespace(chat=SimpleNamespace(completions=completions))
|
|
generator = OpenAICompatibleGenerator(
|
|
client=client,
|
|
model="local-minimind",
|
|
temperature=0.2,
|
|
max_tokens=128,
|
|
open_thinking=True,
|
|
)
|
|
|
|
assert generator("solve it").startswith("```python")
|
|
assert completions.kwargs["messages"][0]["content"] == "solve it"
|
|
assert completions.kwargs["stream"] is False
|
|
assert completions.kwargs["extra_body"] == {"open_thinking": True}
|
|
|
|
|
|
def test_openai_backend_rejects_empty_completion():
|
|
completions = FakeCompletions("")
|
|
client = SimpleNamespace(chat=SimpleNamespace(completions=completions))
|
|
generator = OpenAICompatibleGenerator(client=client)
|
|
|
|
with pytest.raises(RuntimeError, match="empty completion"):
|
|
generator("solve it")
|