diff --git a/tests/test_config.py b/tests/test_config.py index 91a2c92..b3918a1 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -10,6 +10,7 @@ from memsearch.config import ( EmbeddingConfig, MemSearchConfig, + _resolve_env_refs_in_dict, deep_merge, get_config_value, load_config_file, @@ -157,6 +158,36 @@ def test_resolve_env_ref_missing_var(): resolve_env_ref("env:NONEXISTENT_MEMSEARCH_VAR") +def test_resolve_env_refs_in_dict_resolves_nested_strings_only( + monkeypatch: pytest.MonkeyPatch, +): + """Nested env refs should resolve while non-string values pass through.""" + monkeypatch.setenv("INNER_KEY", "resolved-inner") + monkeypatch.setenv("TOP_KEY", "resolved-top") + + resolved = _resolve_env_refs_in_dict( + { + "embedding": { + "api_key": "env:INNER_KEY", + "batch_size": 64, + }, + "compact": {"api_key": "env:TOP_KEY"}, + "enabled": True, + "retries": 3, + } + ) + + assert resolved == { + "embedding": { + "api_key": "resolved-inner", + "batch_size": 64, + }, + "compact": {"api_key": "resolved-top"}, + "enabled": True, + "retries": 3, + } + + def test_resolve_env_refs_in_config(tmp_path: Path, monkeypatch: pytest.MonkeyPatch): """resolve_config should resolve env: references in TOML values.""" monkeypatch.setenv("TEST_API_KEY", "sk-from-env")