fix(tests): use monkeypatch for env var isolation in featherless tests

Replace patch.dict with pytest monkeypatch for idiomatic env var
isolation. Remove unused typing and unittest.mock imports (ruff F401).

Refs: #22497
This commit is contained in:
giulio-leone 2026-03-01 23:46:15 +01:00
parent 7934810e21
commit a8adbee6c9

View file

@ -7,8 +7,6 @@ Featherless AI is an OpenAI-compatible provider with a few customizations.
import os
import sys
from typing import Dict, List, Optional
from unittest.mock import patch
import pytest
@ -149,40 +147,43 @@ class TestFeatherlessAIConfig:
)
assert "Featherless AI doesn't support tools=" in str(excinfo.value)
def test_get_provider_info_with_featherless_ai_api_key(self):
def test_get_provider_info_with_featherless_ai_api_key(self, monkeypatch):
"""Test that FEATHERLESS_AI_API_KEY env var is picked up correctly"""
config = FeatherlessAIConfig()
env = {k: v for k, v in os.environ.items() if not k.startswith("FEATHERLESS")}
env["FEATHERLESS_AI_API_KEY"] = "key-from-ai-env"
with patch.dict(os.environ, env, clear=True):
api_base, api_key = config._get_openai_compatible_provider_info(
api_base=None, api_key=None
)
for key in ("FEATHERLESS_AI_API_KEY", "FEATHERLESS_API_KEY",
"FEATHERLESS_AI_API_BASE", "FEATHERLESS_API_BASE"):
monkeypatch.delenv(key, raising=False)
monkeypatch.setenv("FEATHERLESS_AI_API_KEY", "key-from-ai-env")
api_base, api_key = config._get_openai_compatible_provider_info(
api_base=None, api_key=None
)
assert api_key == "key-from-ai-env"
assert api_base == "https://api.featherless.ai/v1"
def test_get_provider_info_with_legacy_featherless_api_key(self):
def test_get_provider_info_with_legacy_featherless_api_key(self, monkeypatch):
"""Test that legacy FEATHERLESS_API_KEY env var still works"""
config = FeatherlessAIConfig()
env = {k: v for k, v in os.environ.items() if not k.startswith("FEATHERLESS")}
env["FEATHERLESS_API_KEY"] = "key-from-legacy-env"
with patch.dict(os.environ, env, clear=True):
api_base, api_key = config._get_openai_compatible_provider_info(
api_base=None, api_key=None
)
for key in ("FEATHERLESS_AI_API_KEY", "FEATHERLESS_API_KEY",
"FEATHERLESS_AI_API_BASE", "FEATHERLESS_API_BASE"):
monkeypatch.delenv(key, raising=False)
monkeypatch.setenv("FEATHERLESS_API_KEY", "key-from-legacy-env")
api_base, api_key = config._get_openai_compatible_provider_info(
api_base=None, api_key=None
)
assert api_key == "key-from-legacy-env"
assert api_base == "https://api.featherless.ai/v1"
def test_get_provider_info_prefers_featherless_ai_key_over_legacy(self):
def test_get_provider_info_prefers_featherless_ai_key_over_legacy(self, monkeypatch):
"""Test that FEATHERLESS_AI_API_KEY takes precedence over FEATHERLESS_API_KEY"""
config = FeatherlessAIConfig()
env = {k: v for k, v in os.environ.items() if not k.startswith("FEATHERLESS")}
env["FEATHERLESS_AI_API_KEY"] = "preferred-key"
env["FEATHERLESS_API_KEY"] = "legacy-key"
with patch.dict(os.environ, env, clear=True):
_, api_key = config._get_openai_compatible_provider_info(
api_base=None, api_key=None
)
for key in ("FEATHERLESS_AI_API_KEY", "FEATHERLESS_API_KEY",
"FEATHERLESS_AI_API_BASE", "FEATHERLESS_API_BASE"):
monkeypatch.delenv(key, raising=False)
monkeypatch.setenv("FEATHERLESS_AI_API_KEY", "preferred-key")
monkeypatch.setenv("FEATHERLESS_API_KEY", "legacy-key")
_, api_key = config._get_openai_compatible_provider_info(
api_base=None, api_key=None
)
assert api_key == "preferred-key"
def test_default_api_base(self):