fixing tests

This commit is contained in:
João Moura
2025-06-08 21:10:47 -07:00
parent 67e5c00d07
commit 6d8aae7362
2 changed files with 54 additions and 1 deletions

View File

@@ -405,12 +405,17 @@ class LLM(BaseLLM):
"base_url": self.base_url,
"api_version": self.api_version,
"api_key": self.api_key,
"stream": self.stream,
"tools": tools,
"reasoning_effort": self.reasoning_effort,
**self.additional_params,
}
# Only include stream parameter if we're actually streaming
# This maintains backward compatibility with VCR cassettes
# that were recorded without the stream parameter
if self.stream:
params["stream"] = True
# Remove None values from params
return {k: v for k, v in params.items() if v is not None}

View File

@@ -42,10 +42,58 @@ def setup_test_environment():
# Cleanup is handled automatically when tempfile context exits
def filter_stream_parameter(request):
"""Filter out stream parameter from request body to maintain VCR compatibility."""
if hasattr(request, 'body') and request.body:
try:
import json
# Check if it's likely JSON content
if hasattr(request, 'headers') and request.headers:
content_type = request.headers.get('content-type', '').lower()
if 'application/json' not in content_type:
return request
# Try to decode and parse the body
if isinstance(request.body, bytes):
try:
body_str = request.body.decode('utf-8')
except UnicodeDecodeError:
# If we can't decode it, it's probably binary data, leave it as is
return request
else:
body_str = request.body
body = json.loads(body_str)
# Remove stream parameter to match original recordings
if 'stream' in body:
body.pop('stream')
request.body = json.dumps(body).encode() if isinstance(request.body, bytes) else json.dumps(body)
except (json.JSONDecodeError, AttributeError, TypeError):
# If we can't parse the body, leave it as is
pass
return request
@pytest.fixture(autouse=True)
def configure_litellm_for_testing():
"""Configure litellm to work better with VCR cassettes."""
import litellm
# Disable litellm's internal streaming optimizations that might conflict with VCR
original_drop_params = litellm.drop_params
litellm.drop_params = True
yield
# Restore original setting
litellm.drop_params = original_drop_params
@pytest.fixture(scope="module")
def vcr_config(request) -> dict:
return {
"cassette_library_dir": "tests/cassettes",
"record_mode": "new_episodes",
"filter_headers": [("authorization", "AUTHORIZATION-XXX")],
"before_record_request": filter_stream_parameter,
}