mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-05-11 23:27:25 +08:00
63 lines
2.2 KiB
Python
63 lines
2.2 KiB
Python
import pytest
|
|
from llm.core.types import ProviderType
|
|
from llm.providers import ClaudeProvider, OpenAIProvider, OllamaProvider, get_provider
|
|
|
|
|
|
class TestGetProvider:
|
|
def test_get_claude_provider(self):
|
|
provider = get_provider("claude")
|
|
assert isinstance(provider, ClaudeProvider)
|
|
assert provider.provider_type == ProviderType.CLAUDE
|
|
|
|
def test_get_openai_provider(self):
|
|
provider = get_provider("openai")
|
|
assert isinstance(provider, OpenAIProvider)
|
|
assert provider.provider_type == ProviderType.OPENAI
|
|
|
|
def test_get_ollama_provider(self):
|
|
provider = get_provider("ollama")
|
|
assert isinstance(provider, OllamaProvider)
|
|
assert provider.provider_type == ProviderType.OLLAMA
|
|
|
|
def test_get_provider_by_enum(self):
|
|
provider = get_provider(ProviderType.CLAUDE)
|
|
assert isinstance(provider, ClaudeProvider)
|
|
|
|
def test_invalid_provider_raises(self):
|
|
with pytest.raises(ValueError, match="Unknown provider type"):
|
|
get_provider("invalid")
|
|
|
|
def test_saved_llm_env_selects_provider(self, monkeypatch, tmp_path):
|
|
monkeypatch.delenv("LLM_PROVIDER", raising=False)
|
|
monkeypatch.chdir(tmp_path)
|
|
tmp_path.joinpath(".llm.env").write_text("LLM_PROVIDER=ollama\nLLM_MODEL=llama3.2\n")
|
|
|
|
provider = get_provider()
|
|
|
|
assert isinstance(provider, OllamaProvider)
|
|
|
|
def test_env_provider_overrides_saved_llm_env(self, monkeypatch, tmp_path):
|
|
monkeypatch.setenv("LLM_PROVIDER", "ollama")
|
|
monkeypatch.chdir(tmp_path)
|
|
tmp_path.joinpath(".llm.env").write_text("LLM_PROVIDER=openai\n")
|
|
|
|
provider = get_provider()
|
|
|
|
assert isinstance(provider, OllamaProvider)
|
|
|
|
def test_env_provider_is_normalized(self, monkeypatch):
|
|
monkeypatch.setenv("LLM_PROVIDER", "OLLAMA")
|
|
|
|
provider = get_provider()
|
|
|
|
assert isinstance(provider, OllamaProvider)
|
|
|
|
def test_explicit_provider_overrides_saved_llm_env(self, monkeypatch, tmp_path):
|
|
monkeypatch.delenv("LLM_PROVIDER", raising=False)
|
|
monkeypatch.chdir(tmp_path)
|
|
tmp_path.joinpath(".llm.env").write_text("LLM_PROVIDER=openai\n")
|
|
|
|
provider = get_provider("ollama")
|
|
|
|
assert isinstance(provider, OllamaProvider)
|