tests/test_config_env_names.py
Rama main · réplica de lectura del repositorio original.
import pytest
from dm.config_validation import env_bool, env_float, env_int, env_text
def test_config_parsers_accept_shell_safe_environment_names(monkeypatch):
monkeypatch.delenv("DM_VALUE_2", raising=False)
assert env_text("DM_VALUE_2", "ok") == "ok"
assert env_int("DM_VALUE_2", 2, minimum=0, maximum=10) == 2
assert env_float("DM_VALUE_2", 0.5, minimum=0, maximum=1) == 0.5
assert env_bool("DM_VALUE_2", False) is False
@pytest.mark.parametrize("name", [None, "", " DM_X", "DM_X ", "9DM_X", "DM-X", "DM.X", "变量"])
def test_config_parsers_reject_nonportable_environment_names(monkeypatch, name):
monkeypatch.delenv("DM_X", raising=False)
parsers = (
lambda: env_text(name, "ok"),
lambda: env_int(name, 1, minimum=0, maximum=10),
lambda: env_float(name, 0.5, minimum=0, maximum=1),
lambda: env_bool(name, False),
)
for parser in parsers:
with pytest.raises(ValueError):
parser()