litellm/tests/local_testing
yuneng-jiang 278c9babc6
[Infra] Merging RC Branch with Main (#23786)
* fix(test): add missing mocks for test_streamable_http_mcp_handler_mock

The test was missing mocks for extract_mcp_auth_context and set_auth_context,
causing the handler to fail silently in the except block instead of reaching
session_manager.handle_request. This mirrors the fix already applied to the
sibling test_sse_mcp_handler_mock.

Co-authored-by: Ishaan Jaff <ishaan-jaff@users.noreply.github.com>

* fix(ci): route OpenAI models through chat completions in pass-through tests

The test_anthropic_messages_openai_model_streaming_cost_injection test fails
because the OpenAI Responses API returns 400 for requests routed through the
Anthropic Messages endpoint. Setting LITELLM_USE_CHAT_COMPLETIONS_URL_FOR_ANTHROPIC_MESSAGES=true
routes OpenAI models through the stable chat completions path instead.
Cost injection still works since it happens at the proxy level.

Co-authored-by: Ishaan Jaff <ishaan-jaff@users.noreply.github.com>

* fix(ci): fix assemblyai custom auth and router wildcard test flakiness

1. custom_auth_basic.py: Add user_role='proxy_admin' so the custom auth
   user can access management endpoints like /key/generate. The test
   test_assemblyai_transcribe_with_non_admin_key was hidden behind an
   earlier -x failure and was never reached before.

2. test_router_utils.py: Add flaky(retries=3) and increase sleep from 1s
   to 2s for test_router_get_model_group_usage_wildcard_routes. The async
   callback needs time to write usage to cache, and 1s is insufficient on
   slower CI hardware.

Co-authored-by: Ishaan Jaff <ishaan-jaff@users.noreply.github.com>

* ci: retrigger CI pipeline

Co-authored-by: Ishaan Jaff <ishaan-jaff@users.noreply.github.com>

* fix(mypy): use LitellmUserRoles enum instead of raw string in custom_auth_basic

Fixes mypy error: Argument 'user_role' has incompatible type 'str'; expected 'LitellmUserRoles | None'

Co-authored-by: Ishaan Jaff <ishaan-jaff@users.noreply.github.com>

* fix: don't close HTTP/SDK clients on LLMClientCache eviction (#22926)

* fix: don't close HTTP/SDK clients on LLMClientCache eviction

Removing the _remove_key override that eagerly called aclose()/close()
on evicted clients. Evicted clients may still be held by in-flight
streaming requests; closing them causes:

  RuntimeError: Cannot send a request, as the client has been closed.

This is a regression from commit fb72979432. Clients that are no longer
referenced will be garbage-collected naturally. Explicit shutdown cleanup
happens via close_litellm_async_clients().

Fixes production crashes after the 1-hour cache TTL expires.

* test: update LLMClientCache unit tests for no-close-on-eviction behavior

Flip the assertions: evicted clients must NOT be closed. Replace
test_remove_key_closes_async_client → test_remove_key_does_not_close_async_client
and equivalents for sync/eviction paths.

Add test_remove_key_removes_plain_values for non-client cache entries.
Remove test_background_tasks_cleaned_up_after_completion (no more _background_tasks).
Remove test_remove_key_no_event_loop variant that depended on old behavior.

* test: add e2e tests for OpenAI SDK client surviving cache eviction

Add two new e2e tests using real AsyncOpenAI clients:
- test_evicted_openai_sdk_client_stays_usable: verifies size-based eviction
  doesn't close the client
- test_ttl_expired_openai_sdk_client_stays_usable: verifies TTL expiry
  eviction doesn't close the client

Both tests sleep after eviction so any create_task()-based close would
have time to run, making the regression detectable.

Also expand the module docstring to explain why the sleep is required.

* docs(AGENTS.md): add rule — never close HTTP/SDK clients on cache eviction

* docs(CLAUDE.md): add HTTP client cache safety guideline

* [Fix] Install bsdmainutils for column command in security scans

The security_scans.sh script uses `column` to format vulnerability
output, but the package wasn't installed in the CI environment.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: handle string callback values in prometheus multiproc setup

When callbacks are configured as a plain string (e.g., `callbacks: "my_callback"`)
instead of a list, the proxy crashes on startup with:
  TypeError: can only concatenate str (not "list") to str

Normalize each callback setting to a list before concatenating.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* bump: version 1.82.2 → 1.82.3

* fix(test): update test_startup_fails_when_db_setup_fails for opt-in enforcement

The --enforce_prisma_migration_check flag is now required to trigger
sys.exit(1) on DB migration failure, after #23675 flipped the default
behavior to warn-and-continue.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(cost_calculator): use model name for per-request custom pricing when router_model_id has no pricing

When custom pricing is passed as per-request kwargs (input_cost_per_token/output_cost_per_token),
completion() registers pricing under the model name, but _select_model_name_for_cost_calc was
selecting the router deployment hash (which has no pricing data), causing response_cost to be 0.0.

Now checks whether the router_model_id entry actually has pricing before preferring it.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Ishaan Jaff <ishaan-jaff@users.noreply.github.com>
Co-authored-by: Ishaan Jaff <ishaanjaffer0324@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 15:32:20 -07:00
..
.litellm_cache
auto_router
example_config_yaml
test_configs
test_model_response_typing
adroit-crow-413218-bc47f303efc9.json
azure_fine_tune.jsonl
azure_speech.mp3
batch_job_results_furniture.jsonl
cache_unit_tests.py
conftest.py [Fix] Reset api_base/api_key in xdist conftest to prevent cross-test leakage 2026-03-15 23:55:44 -07:00
create_mock_standard_logging_payload.py
data_map.txt
eagle.wav
example.jsonl
gettysburg.wav
large_text.py
model_cost.json
openai_batch_completions_router.jsonl
openai_batch_completions.jsonl
speech_vertex.mp3
stream_chunk_testdata.py
test_acompletion_fallbacks.py
test_acompletion.py
test_acooldowns_router.py Revert "Fix xdist test isolation: capture true defaults and poll instead of sleep" 2026-03-15 22:57:39 -07:00
test_add_function_to_prompt.py
test_add_update_models.py fix(tests): skip remaining real prisma DB tests in CI and related test suites 2026-02-20 13:25:42 -03:00
test_aim_guardrails.py Fix aim security guardrail tests (#17499) 2025-12-04 13:29:20 -08:00
test_alangfuse.py Fix CI: Revert security scan changes and add GitGuardian ignore rules (#18358) 2025-12-22 17:03:53 -08:00
test_amazing_vertex_completion.py Fix flaky tests: anthropic error_msg state leak and vertex llama 404 2026-03-15 17:59:25 -07:00
test_anthropic_prompt_caching.py [Fix] Responses bridge variable mismatch and outdated CI tests 2026-03-14 12:12:35 -07:00
test_arize_ai.py feat: allow configuring project name for OpenTelemetry service name 2026-01-07 14:20:10 +09:00
test_arize_phoenix.py ArizePhoenixConfig 2025-11-22 09:28:37 -08:00
test_assistants.py
test_async_fn.py
test_auth_utils.py Support multiple headers mapped to the customer user role (#23664) 2026-03-15 14:20:45 +05:30
test_azure_content_safety.py
test_azure_openai.py Fix:test_aaaaazure_tenant_id_auth 2026-01-20 17:39:08 +05:30
test_azure_perf.py
test_basic_python_version.py [Release Fix] (#22411) 2026-02-28 09:46:35 -08:00
test_batch_completion_return_exceptions.py fix(test): accept both AuthenticationError and InternalServerError in batch_completion test (#20186) 2026-01-31 13:36:27 -08:00
test_batch_completions.py
test_blocked_user_list.py fix(tests): skip remaining real prisma DB tests in CI and related test suites 2026-02-20 13:25:42 -03:00
test_braintrust.py
test_budget_manager.py
test_caching_handler.py Add support for caching for responses API 2026-01-14 13:33:07 +05:30
test_caching_ssl.py
test_caching.py Fix flaky test_caching_with_ttl by using distinct mock responses 2026-03-15 17:10:43 -07:00
test_class.py
test_completion_cost.py fix(tests): replace deprecated model refs in cost and model_info tests 2026-03-13 00:39:35 -07:00
test_completion_with_retries.py inspect BadRequestError after all other policy types (#19878) 2026-01-27 18:15:04 -08:00
test_completion.py Update deprecated Together AI model in test_completion_together_ai_llama 2026-03-15 14:02:42 -07:00
test_config.py
test_cost_calc.py Revert "Fix xdist test isolation: capture true defaults and poll instead of sleep" 2026-03-15 22:57:39 -07:00
test_custom_api_logger.py
test_custom_callback_input.py Fix flaky audio streaming cost assertion in test_standard_logging_payload_audio 2026-03-12 23:23:10 -07:00
test_custom_llm.py feat(custom_llm): add image_edit and aimage_edit support (#17999) 2025-12-15 14:16:36 -08:00
test_custom_logger.py Mark test_redis_cache_completion_stream as flaky with retries 2026-03-15 20:44:18 -07:00
test_disk_cache_unit_tests.py
test_docker_no_network_on_deploy.py fix: update docker test file to right path 2026-02-19 18:44:28 +05:30
test_dual_cache.py
test_dynamic_rate_limit_handler.py
test_dynamodb_logs.py
test_embedding.py fix(test): update deprecated gemini embedding model (#20621) 2026-02-06 18:35:40 -08:00
test_exceptions.py Fix update deprecated model test 2026-03-12 18:34:20 +05:30
test_file_types.py
test_function_call_parsing.py [Release Fix] (#22411) 2026-02-28 09:46:35 -08:00
test_function_calling.py Fix flaky tests: anthropic error_msg state leak and vertex llama 404 2026-03-15 17:59:25 -07:00
test_function_setup.py Add test for removal of thought signature 2025-12-23 14:56:42 +05:30
test_gcs_bucket.py Fixes test_aaabasic_gcs_logger 2026-01-21 08:58:16 +05:30
test_gcs_cache_unit_tests.py
test_gemini_reasoning_content.py Add thought signature for non tool call requests 2026-01-02 12:31:31 +05:30
test_get_llm_provider.py Fix test_default_api_base failing because of chatgpt as provider 2026-01-21 09:32:38 +05:30
test_get_model_file.py
test_get_model_info.py fix(tests): replace deprecated model refs in cost and model_info tests 2026-03-13 00:39:35 -07:00
test_get_optional_params_embeddings.py fix(embeddings): allow dimensions param passthrough via allowed_openai_params for non-text-embedding-3 OpenAI models 2026-02-26 09:59:37 +05:30
test_get_optional_params_functions_not_supported.py
test_google_ai_studio_gemini.py
test_guardrails_ai.py
test_helicone_integration.py
test_http_parsing_utils.py
test_img_resize.py
test_lakera_ai_prompt_injection.py
test_langchain_ChatLiteLLM.py
test_langsmith.py
test_least_busy_routing.py
test_litellm_max_budget.py
test_llm_guard.py
test_load_test_router_s3.py
test_loadtest_router.py
test_logfire.py
test_logging.py
test_longer_context_fallback.py
test_lowest_cost_routing.py
test_lowest_latency_routing.py
test_lunary.py
test_max_tpm_rpm_limiter.py
test_mem_leak.py
test_mem_usage.py
test_mock_request.py
test_model_alias_map.py
test_model_max_token_adjust.py
test_multiple_deployments.py
test_ollama_local_chat.py
test_ollama_local.py
test_ollama.py [Fix] CI/CD - litellm_mapped_tests_llms | litellm_mapped_tests_core | caching_unit_tests (#18197) 2025-12-18 08:49:23 -08:00
test_openai_moderations_hook.py [Fix] Guardrails API - Ensure OpenAI Moderations Guard works with OpenAI Embeddings (#20523) 2026-02-05 14:40:15 -08:00
test_opik.py
test_pass_through_endpoints.py fix(tests): make RPM limit test sequential to avoid race condition 2026-02-23 16:34:52 -03:00
test_profiling_router.py
test_prometheus_service.py [Release Fix] (#22411) 2026-02-28 09:46:35 -08:00
test_prompt_caching.py
test_prompt_injection_detection.py
test_promptlayer_integration.py
test_provider_specific_config.py
test_pydantic_namespaces.py
test_pydantic.py
test_redis_batch_optimizations.py
test_register_model.py Revert "test_update_model_cost_map_url" 2025-12-22 12:41:30 +05:30
test_router_auto_router.py
test_router_batch_completion.py
test_router_budget_limiter.py fix(tests): stabilize 5 flaky/outdated router integration tests 2026-03-12 22:54:31 -07:00
test_router_caching.py
test_router_client_init.py
test_router_cooldown_handlers.py [Fix] Restore xdist test isolation: capture true defaults and poll cooldowns 2026-03-15 23:33:21 -07:00
test_router_custom_routing.py Optimize CI: parallelize router and guardrails test jobs, fix test isolation 2026-03-14 22:54:44 -07:00
test_router_debug_logs.py Fix flaky CI: update deprecated model, filter leaked async task logs 2026-03-15 13:38:35 -07:00
test_router_fallback_handlers.py Optimize CI: parallelize router and guardrails test jobs, fix test isolation 2026-03-14 22:54:44 -07:00
test_router_fallbacks.py Fix test_async_fallbacks_streaming to use mock_response instead of real API 2026-03-14 23:45:40 -07:00
test_router_get_deployments.py Fix:add async_get_available_deployment_for_pass_through in code tests 2026-01-16 16:37:44 +05:30
test_router_init.py
test_router_max_parallel_requests.py Revert "Fix xdist test isolation: capture true defaults and poll instead of sleep" 2026-03-15 22:57:39 -07:00
test_router_pattern_matching.py Fix: Model matching priority in configuration 2026-01-13 11:44:48 +05:30
test_router_retries.py fix(tests): read CI_CD_DEFAULT_ANTHROPIC_MODEL env var instead of hardcoding model (#21781) 2026-02-21 10:46:49 -08:00
test_router_timeout.py [Fix] Fix flaky and outdated router integration tests 2026-03-12 15:20:55 -07:00
test_router_utils.py [Infra] Merging RC Branch with Main (#23786) 2026-03-16 15:32:20 -07:00
test_router_with_fallbacks.py
test_router.py Fix flaky CI: update deprecated model, filter leaked async task logs 2026-03-15 13:38:35 -07:00
test_rules.py
test_sagemaker_nova_integration.py feat: add sagemaker_nova provider for Amazon Nova models on SageMaker (#21542) 2026-03-14 15:10:01 -07:00
test_sagemaker.py Fix test_completion_sagemaker_messages_api retry flakiness 2026-03-15 13:57:50 -07:00
test_scheduler.py fix(scheduler): remove orphan entries from queue - causing memory leak. (#20866) 2026-02-10 22:34:52 -08:00
test_secret_detect_hook.py
test_simple_shuffle.py
test_spend_calculate_endpoint.py
test_stream_chunk_builder.py Fix flaky test_stream_chunk_builder_openai_audio_output_usage 2026-03-09 17:18:00 -07:00
test_streaming.py Replace deprecated model names in tests that were removed from remote model cost map 2026-03-12 14:12:07 -07:00
test_supabase_integration.py
test_team_config.py
test_text_completion.py
test_timeout.py Fix flaky CI tests: mock timeout race, update deprecated model, fix callback leak 2026-03-14 23:45:58 -07:00
test_together_ai.py
test_tpm_rpm_routing_v2.py
test_traceloop.py
test_ui_sso_helper_utils.py
test_unit_test_caching.py
test_update_spend.py fix(tests): skip remaining real prisma DB tests in CI and related test suites 2026-02-20 13:25:42 -03:00
test_validate_environment.py
test_wandb.py
user_cost.json
vertex_ai.jsonl
vertex_batch_completions.jsonl
vertex_key.json
whitelisted_bedrock_models.txt