litellm/tests/test_litellm
Cursor Agent 0220609ab6 Add validation and fallback protection for model cost map
This prevents upstream GitHub changes from breaking LLM calls by:

1. Runtime validation in get_model_cost_map.py:
   - Validates JSON structure before accepting remote data
   - Checks for required fields (litellm_provider)
   - Validates mode values against allowed list
   - Validates numeric cost fields
   - Falls back to local backup if validation fails
   - Logs warnings when falling back

2. Enhanced CI validation (.github/workflows/test-model-map.yaml):
   - JSON syntax validation (fast fail)
   - Comprehensive schema validation via Python script
   - Validates both main file and backup file
   - Checks backup freshness

3. New validation script (scripts/validate_model_cost_map.py):
   - Validates all entries have required fields
   - Checks mode values against allowed modes
   - Validates numeric fields are actually numeric
   - Sanity checks for suspiciously high costs
   - Detailed error reporting

4. Unit tests for validation logic

The key improvement: if GitHub returns valid JSON but semantically
broken data (missing fields, wrong types), we now detect this and
fall back to the local backup instead of using the bad data.

Customers can also set LITELLM_LOCAL_MODEL_COST_MAP=True to completely
disable remote fetching for maximum stability.

Co-authored-by: ishaan <ishaan@berri.ai>
2026-01-30 21:26:58 +00:00
..
a2a_protocol [Fix] A2a Gateway - Allow supporting old A2a card formats (#19949) 2026-01-28 15:02:08 -08:00
anthropic_interface/exceptions [bug fix] do not fallback to token counter if disable_token_counter is enabled (#19041) 2026-01-13 16:53:38 -08:00
caching fix(redis): handle float redis_version from AWS ElastiCache Valkey (#16207) 2025-11-04 19:20:00 -08:00
completion_extras Add annotations to completions responses API bridge 2026-01-07 14:30:31 +05:30
containers fix: make HTTPHandler mockable in OIDC secret manager tests (#19803) 2026-01-26 11:00:42 -08:00
enterprise Fix broken mocks in 6 flaky tests to prevent real API calls (#19829) 2026-01-26 17:39:40 -08:00
experimental_mcp_client fix: FLAKY tests 2026-01-24 11:13:44 -08:00
google_genai test_stream_transformation_error_sync 2026-01-24 17:19:21 -08:00
images fix(image_edit): add drop_params support and fix Vertex AI config (#18077) 2025-12-17 11:28:34 +05:30
integrations Merge branch 'main' into litellm_oss_staging_01_27_2026 2026-01-27 17:11:15 +05:30
interactions fix: test_create_simple_string_input 2026-01-05 17:15:12 +05:30
litellm_core_utils Add validation and fallback protection for model cost map 2026-01-30 21:26:58 +00:00
llms Merge pull request #20058 from BerriAI/litellm_vertex_ai_prompt-caching-scope-2026-01-05, 2026-01-30 20:32:00 +05:30
passthrough fix test claude-sonnet-4-5-20250929 2025-10-31 18:13:29 -07:00
proxy [Feat] Add async_post_call_response_headers_hook to CustomLogger (#20083) 2026-01-30 12:44:44 -08:00
responses fix(responses): update local_vars with detected provider (#19782) (#19798) 2026-01-26 20:47:35 -08:00
router_strategy feat(tag-routing): support toggling tag matching between ANY and ALL (#18776) 2026-01-08 23:39:03 +05:30
router_utils [Feat] New Logging Integration - Azure Sentinel Logger (#18146) 2025-12-18 02:04:49 +05:30
secret_managers Fix broken mocks in 6 flaky tests to prevent real API calls (#19829) 2026-01-26 17:39:40 -08:00
types fix: extend case normalization to ALL guardrail types (not just tool_permission) (#18664) 2026-01-05 11:59:00 -08:00
vector_stores Fix broken mocks in 6 flaky tests to prevent real API calls (#19829) 2026-01-26 17:39:40 -08:00
__init__.py
conftest.py
log.txt
readme.md
test_acompletion_session_reuse_e2e.py
test_add_deployment_no_master_key.py fix: remove strict master_key check in add_deployment (#16453) 2025-11-10 19:23:13 -08:00
test_aembedding_session_reuse_e2e.py
test_azure_video_router.py
test_claude_haiku_4_5_config.py fix haiku-4-5 bedrock configs (#16732) 2025-11-17 19:52:01 -08:00
test_constants.py
test_container_router.py Add E2E Container API Support (#16136) 2025-11-01 14:03:51 -07:00
test_cost_calculation_log_level.py
test_cost_calculator.py Merge branch 'main' into litellm_oss_staging_01_28_2026 2026-01-29 17:39:42 +05:30
test_eager_tiktoken_load.py fix(main): use local tiktoken cache in lazy loading (#19774) 2026-01-27 18:16:58 -08:00
test_exception_header_preservation.py fix: preserve llm_provider-* headers in error responses (#19020) 2026-01-14 22:49:39 +05:30
test_exception_mapping_request_attribute.py
test_filter_out_litellm_params.py
test_gpt_image_cost_calculator.py Fix gpt-image-1.5 cost calculation not including output image tokens (#19515) 2026-01-22 19:42:15 -08:00
test_groq_streaming_encoding.py
test_lazy_imports.py Fix: test_token_counter_lazy_imports 2026-01-08 16:44:35 +05:30
test_logging.py
test_lowest_latency_zero_tokens.py
test_main.py fix: make HTTPHandler mockable in OIDC secret manager tests (#19803) 2026-01-26 11:00:42 -08:00
test_model_response_normalization.py Normalize OpenAI SDK BaseModel choices/messages to avoid Pydantic serializer warnings (#18972) 2026-01-14 03:40:11 +05:30
test_nested_drop_params.py feat: Replace jsonpath-ng with custom minimal parser for additional_drop_params 2025-12-09 17:30:30 +05:30
test_redis.py
test_responses_api_bridge_non_stream.py fix: Pydantic will fail to parse it because cached_tokens is required but not provided 2026-01-28 11:51:26 +05:30
test_responses_id_security.py fix(ui): use non-streaming method for endpoint v1/a2a/message/send in… (#19025) 2026-01-14 03:29:10 +05:30
test_router.py Manual revert #19078 2026-01-17 06:54:08 +09:00
test_router_google_genai.py
test_router_per_deployment_num_retries.py Bugfix/19481 num retries env var type (#19507) 2026-01-22 19:39:58 -08:00
test_router_silent_experiment.py fixes: ci pipeline router coverage failure (#20065) 2026-01-30 11:55:49 -08:00
test_shared_session_integration.py
test_ssl_verify_unit.py Fix/per service ssl override v2 (#19538) 2026-01-21 20:10:04 -08:00
test_system_message_format_bug.py
test_utils.py Add OpenRouter Kimi K2.5 (#19872) 2026-01-28 22:34:48 -08:00
test_uuid_helper.py
test_video_generation.py test fixes 2026-01-24 14:08:48 -08:00
test_xai_responses_auto_routing.py Add routing of xai chat completions to responses when web search options is present 2026-01-30 14:15:35 +05:30

Testing for litellm/

This directory 1:1 maps the the litellm/ directory, and can only contain mocked tests.

The point of this is to:

  1. Increase test coverage of litellm/
  2. Make it easy for contributors to add tests for the litellm/ package and easily run tests without needing LLM API keys.

File name conventions

  • litellm/proxy/test_caching_routes.py maps to litellm/proxy/caching_routes.py
  • test_<filename>.py maps to litellm/<filename>.py