From 1ecf44dc85d027888e422aeb3c18f77cc1a2b7e1 Mon Sep 17 00:00:00 2001 From: dajiaohuang Date: Fri, 4 Sep 2026 14:12:50 +0800 Subject: [PATCH] test: cover legacy redis search imports --- .../caching/test_valkey_semantic_cache.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/tests/test_litellm/caching/test_valkey_semantic_cache.py b/tests/test_litellm/caching/test_valkey_semantic_cache.py index 749658784ac..f128795039d 100644 --- a/tests/test_litellm/caching/test_valkey_semantic_cache.py +++ b/tests/test_litellm/caching/test_valkey_semantic_cache.py @@ -534,3 +534,45 @@ def test_importing_caching_does_not_require_redis(): ) assert result.returncode == 0, result.stderr assert "ok" in result.stdout + + +def test_valkey_cache_supports_redis_py_4_index_module(): + code = textwrap.dedent( + """ + import builtins + import sys + import types + + from redis.commands.search.index_definition import IndexDefinition, IndexType + + legacy = types.ModuleType("redis.commands.search.indexDefinition") + legacy.IndexDefinition = IndexDefinition + legacy.IndexType = IndexType + sys.modules[legacy.__name__] = legacy + original_import = builtins.__import__ + + def compatibility_import(name, *args, **kwargs): + if name == "redis.commands.search.index_definition": + raise ModuleNotFoundError(name=name) + return original_import(name, *args, **kwargs) + + builtins.__import__ = compatibility_import + from litellm.caching.valkey_semantic_cache import ValkeySemanticCache + + cache = ValkeySemanticCache( + similarity_threshold=0.8, + sync_client=object(), + async_client=object(), + ) + assert cache._index_definition().__class__ is IndexDefinition + print("ok") + """ + ) + result = subprocess.run( + [sys.executable, "-c", code], + capture_output=True, + text=True, + env={**os.environ, "PYTHONPATH": _REPO_ROOT}, + ) + assert result.returncode == 0, result.stderr + assert "ok" in result.stdout