Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions tests/test_litellm/test_constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -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}"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Test fails for non-overridable hardcoded numeric constant

Medium Severity

DEFAULT_HEALTH_CHECK_STALENESS_MULTIPLIER in constants.py is hardcoded to 2 with no os.getenv call. The test iterates over all uppercase numeric constants and asserts each can be overridden via an environment variable. Since this constant doesn't read from any env var, reloading the module will always yield 2, causing the assertion to fail when it expects 3.

Fix in Cursor Fix in Web

Loading