Files
EverOS/tests/unit/test_component/test_llm/test_factory.py
tomtan 0910affc78
Some checks failed
CI / lint (push) Has been cancelled
CI / unit tests (push) Has been cancelled
CI / integration tests (push) Has been cancelled
CI / package build (push) Has been cancelled
Commit lint / pull request title (push) Has been cancelled
Commit lint / commit messages (push) Has been cancelled
Save local modifications for syncing
2026-06-10 10:05:52 +08:00

50 lines
1.5 KiB
Python

"""``build_llm_provider`` — settings validation + provider build."""
from __future__ import annotations
import pytest
from pydantic import SecretStr
from everos.component.llm import build_llm_provider
from everos.component.llm import factory as factory_mod
from everos.component.llm.openai_provider import OpenAIProvider
from everos.config.settings import LLMSettings
def test_raises_when_api_key_missing() -> None:
s = LLMSettings(model="m", api_key=None, base_url="https://x")
with pytest.raises(ValueError, match="EVEROS_LLM__API_KEY"):
build_llm_provider(s)
def test_raises_when_base_url_missing() -> None:
s = LLMSettings(model="m", api_key=SecretStr("k"), base_url=None)
with pytest.raises(ValueError, match="EVEROS_LLM__BASE_URL"):
build_llm_provider(s)
def test_builds_openai_provider() -> None:
s = LLMSettings(model="m", api_key=SecretStr("k"), base_url="https://x")
p = build_llm_provider(s)
assert isinstance(p, OpenAIProvider)
def test_passes_configured_timeout(monkeypatch: pytest.MonkeyPatch) -> None:
captured_kwargs = {}
sentinel = object()
def capture_provider(**kwargs):
captured_kwargs.update(kwargs)
return sentinel
monkeypatch.setattr(factory_mod, "OpenAIProvider", capture_provider)
s = LLMSettings(
model="m",
api_key=SecretStr("k"),
base_url="https://x",
timeout_seconds=240.0,
)
assert build_llm_provider(s) is sentinel
assert captured_kwargs["timeout"] == 240.0