litellm/tests/test_litellm
Peter Chanthamynavong f8e7e153d5
fix(cache): handle string content in is_cached_message (#17853)
Fixes #17821

The `is_cached_message` function crashed with TypeError when message
content was a string instead of a list of content blocks.

Changes:
- Add explicit `isinstance(content, list)` check before iteration
- Add `isinstance(content_item, dict)` check inside loop to skip non-dict items
- Use `.get()` for safer nested dict access
- Follow same pattern as `extract_ttl_from_cached_messages` (same module)

Tests:
- Add TestIsCachedMessage class with 9 test cases covering:
  - String content (the reported bug)
  - None content
  - Missing content key
  - Empty list content
  - List with/without cache_control
  - Mixed content types (strings + dicts)
  - Wrong cache_control type
2025-12-12 03:59:52 -08:00
..
a2a_protocol [Feat] Agent Gateway - allow adding langgraph, bedrock agent core agents (#17802) 2025-12-10 19:13:50 -08:00
caching fix(redis): handle float redis_version from AWS ElastiCache Valkey (#16207) 2025-11-04 19:20:00 -08:00
completion_extras fix(completion): transform image content in tool results for Responses API (#17799) 2025-12-11 08:21:05 -08:00
containers [Fix] Containers API - Allow using LIST, Create Containers using custom-llm-provider (#17740) 2025-12-09 17:00:35 -08:00
enterprise Sendgrid integration + bump enterprise package 2025-12-09 19:34:09 -08:00
experimental_mcp_client refactor: drop MCPClient.connect and use run_with_session lifecycle (#16696) 2025-11-15 17:54:27 -08:00
google_genai [Oct Staging Branch] (#15460) 2025-10-17 17:52:25 -07:00
integrations chore: prefer standard trace id for Langfuse logging (#17791) 2025-12-11 08:18:45 -08:00
litellm_core_utils Fix: Add Gemini context window exception mapping (#17751) 2025-12-09 18:24:13 -08:00
llms fix: add speechConfig to GenerationConfig for Gemini TTS (#17851) 2025-12-12 03:56:44 -08:00
passthrough fix test claude-sonnet-4-5-20250929 2025-10-31 18:13:29 -07:00
proxy feat(guardrails): add configurable fail-open, timeout, and app_user to PANW Prisma AIRS guardrail (#17785) 2025-12-11 15:23:59 -08:00
responses Add usage details in responses usage object 2025-12-08 11:51:47 +05:30
router_strategy fix: Prevent AttributeError for _get_tags_from_request_kwargs (#14735) 2025-09-19 15:21:02 -07:00
router_utils fix(router): handle tools=None in filter_web_search_deployments (#17684) 2025-12-08 18:36:46 -08:00
secret_managers [Feat] Add Custom Secret Manager - Allow users to define and write a custom secret manager (#16297) 2025-11-05 17:20:26 -08:00
types Gemini models: capture image_tokens and support cost_per_output_image_token in costs calculations (#16912) 2025-11-21 19:59:24 -08:00
vector_stores Add vector store support for ragflow 2025-12-03 15:29:47 +05:30
__init__.py
conftest.py Perf speed up pytest (#15951) 2025-10-27 19:43:40 -07:00
log.txt fix: fix linting errors 2025-09-27 14:25:05 -07:00
readme.md
test_acompletion_session_reuse_e2e.py [Fix] - Sessions not being shared (#15388) 2025-10-09 16:57:40 -07:00
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 [Fix] - shared session parsing and usage issue (#15440) 2025-10-10 19:26:53 -07:00
test_azure_video_router.py Litellm sameer oct staging (#15806) 2025-10-24 12:17:22 -07:00
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 tes numeric constants 2025-10-29 18:23:38 -07:00
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 fixed flex tier pricing (#17748) 2025-12-09 18:10:51 -08:00
test_exception_mapping_request_attribute.py Added test 2025-09-29 21:43:31 +05:30
test_filter_out_litellm_params.py [Bug Fix] Exa Search API - ensure request params are sent to Exa AI (#15855) 2025-10-23 11:56:30 -07:00
test_groq_streaming_encoding.py
test_logging.py
test_lowest_latency_zero_tokens.py fix: remove router inefficiencies (from O(M*N) to O(1)) - 62.5% faster P99 latency (#15046) 2025-09-29 15:49:46 -07:00
test_main.py fix(ocr): add missing ocr and aocr to CallTypes enum (#17435) 2025-12-03 21:28:13 -08:00
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 fix: Apply max_connections configuration to Redis async client (#15797) 2025-10-22 09:19:08 -07:00
test_responses_id_security.py test_encrypt_response_id_success 2025-11-14 17:28:15 -08:00
test_router_google_genai.py test(gemini): Add unit tests for Google GenAI adapter 2025-09-29 18:51:35 +08:00
test_router.py Add aws_bedrock_runtime_endpoint into Credential Types (#17053) 2025-11-24 20:48:51 -08:00
test_shared_session_integration.py feat: Add shared_session parameter for aiohttp ClientSession reuse 2025-09-19 01:46:53 -07:00
test_system_message_format_bug.py
test_utils.py fix(cache): handle string content in is_cached_message (#17853) 2025-12-12 03:59:52 -08:00
test_uuid_helper.py Fix: revert fastuuid optional dependency, always use fastuuid in .__uid helper (#14941) 2025-09-26 09:14:20 -07:00
test_video_generation.py fix: respect videos content db creds 2025-12-10 23:00:01 +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