From bd5913954da98d02ae1d474b3df06cc485a8f40a Mon Sep 17 00:00:00 2001 From: Sameer Kankute Date: Fri, 27 Mar 2026 21:33:29 +0530 Subject: [PATCH] Fix test --- tests/test_litellm/test_constants.py | 52 ++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/tests/test_litellm/test_constants.py b/tests/test_litellm/test_constants.py index b3c13c6e26e..735b801c065 100644 --- a/tests/test_litellm/test_constants.py +++ b/tests/test_litellm/test_constants.py @@ -71,3 +71,55 @@ def _build_constant_env_var_map() -> dict[str, str]: env_var_map[constant_name] = env_var_name return env_var_map + + +def test_all_numeric_constants_can_be_overridden(): + """ + Test that all integer and float constants in constants.py can be overridden with environment variables. + This ensures that any new constants added in the future will be configurable via environment variables. + """ + # Get all attributes from the constants module + constants_attributes = inspect.getmembers(constants) + + # Filter for uppercase constants (by convention) that are integers or floats + # Exclude booleans since bool is a subclass of int in Python + numeric_constants = [ + (name, value) + for name, value in constants_attributes + if name.isupper() + and isinstance(value, (int, float)) + and not isinstance(value, bool) + ] + + # Ensure we found some constants to test + assert len(numeric_constants) > 0, "No numeric constants found to test" + + print("all numeric constants", json.dumps(numeric_constants, indent=4)) + + # Discover exact env vars from constants.py to avoid brittle hardcoded mappings. + constant_to_env_var = _build_constant_env_var_map() + + # Verify all numeric constants have environment variable support + for name, value in numeric_constants: + # Skip constants that are not meant to be overridden (if any) + if name.startswith("_"): + continue + + # Create a test value that's different from the default + test_value = value + 1 if isinstance(value, int) else value + 0.1 + + # Use the env var name that the constants module actually reads + env_var_name = constant_to_env_var.get(name, name) + + # Set the environment variable + with mock.patch.dict(os.environ, {env_var_name: str(test_value)}): + print("overriding", name, "with", test_value) + importlib.reload(constants) + + # Get the new value after reload + new_value = getattr(constants, name) + + # Verify the value was overridden + assert ( + new_value == test_value + ), f"Failed to override {name} with environment variable. Expected {test_value}, got {new_value}"