Testing YAML Configuration Environment Variable Loading in private-gpt
This test suite validates the YAML configuration loading functionality in private-gpt, focusing on environment variable substitution and default value handling. The tests ensure proper loading of environment variables into YAML configurations while maintaining security and flexibility.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
zylon-ai/private-gpt
tests/settings/test_settings_loader.py
import io
import os
import pytest
from private_gpt.settings.yaml import load_yaml_with_envvars
def test_environment_variables_are_loaded() -> None:
sample_yaml = """
replaced: ${TEST_REPLACE_ME}
"""
env = {"TEST_REPLACE_ME": "replaced"}
loaded = load_yaml_with_envvars(io.StringIO(sample_yaml), env)
os.environ.copy()
assert loaded["replaced"] == "replaced"
def test_environment_defaults_variables_are_loaded() -> None:
sample_yaml = """
replaced: ${PGPT_EMBEDDING_HF_MODEL_NAME:BAAI/bge-small-en-v1.5}
"""
loaded = load_yaml_with_envvars(io.StringIO(sample_yaml), {})
assert loaded["replaced"] == "BAAI/bge-small-en-v1.5"
def test_environment_defaults_variables_are_loaded_with_duplicated_delimiters() -> None:
sample_yaml = """
replaced: ${PGPT_EMBEDDING_HF_MODEL_NAME::duped::}
"""
loaded = load_yaml_with_envvars(io.StringIO(sample_yaml), {})
assert loaded["replaced"] == ":duped::"
def test_environment_without_defaults_fails() -> None:
sample_yaml = """
replaced: ${TEST_REPLACE_ME}
"""
with pytest.raises(ValueError) as error:
load_yaml_with_envvars(io.StringIO(sample_yaml), {})
assert error is not None