Files
Jyotisha/tests/test_local_env.py
2026-06-29 10:45:11 +08:00

69 lines
2.4 KiB
Python

from __future__ import annotations
import os
from pathlib import Path
from scripts import local_env
def test_load_local_env_reads_repo_env_file_without_overriding_explicit_env(tmp_path: Path, monkeypatch) -> None:
env_file = tmp_path / ".env.local"
env_file.write_text(
"VEDASTRO_API_ENDPOINT=https://api.vedastro.org/api\n"
"VEDASTRO_ENABLE_NETWORK=1\n"
"VEDASTRO_API_KEY=from_file\n",
encoding="utf-8",
)
monkeypatch.delenv("VEDASTRO_API_ENDPOINT", raising=False)
monkeypatch.setenv("VEDASTRO_API_KEY", "from_process")
try:
loaded = local_env.load_local_env(root=tmp_path)
assert loaded == [env_file]
assert os.environ["VEDASTRO_API_ENDPOINT"] == "https://api.vedastro.org/api"
assert os.environ["VEDASTRO_ENABLE_NETWORK"] == "1"
assert os.environ["VEDASTRO_API_KEY"] == "from_process"
finally:
os.environ.pop("VEDASTRO_API_ENDPOINT", None)
os.environ.pop("VEDASTRO_ENABLE_NETWORK", None)
def test_load_local_env_ignores_missing_file(tmp_path: Path, monkeypatch) -> None:
monkeypatch.delenv("VEDASTRO_API_ENDPOINT", raising=False)
os.environ.pop("VEDASTRO_ENABLE_NETWORK", None)
loaded = local_env.load_local_env(root=tmp_path)
assert loaded == []
assert "VEDASTRO_API_ENDPOINT" not in os.environ
def test_load_local_env_does_not_resurrect_deleted_values_after_bootstrap(tmp_path: Path, monkeypatch) -> None:
env_file = tmp_path / ".env.local"
env_file.write_text("VEDASTRO_ENABLE_NETWORK=1\n", encoding="utf-8")
monkeypatch.delenv("VEDASTRO_ENABLE_NETWORK", raising=False)
loaded = local_env.load_local_env(root=tmp_path)
assert loaded == [env_file]
assert os.environ["VEDASTRO_ENABLE_NETWORK"] == "1"
monkeypatch.delenv("VEDASTRO_ENABLE_NETWORK", raising=False)
loaded_again = local_env.load_local_env(root=tmp_path)
assert loaded_again == []
assert "VEDASTRO_ENABLE_NETWORK" not in os.environ
def test_load_local_env_respects_explicit_skip_flag(tmp_path: Path, monkeypatch) -> None:
env_file = tmp_path / ".env.local"
env_file.write_text("VEDASTRO_API_ENDPOINT=https://api.vedastro.org/api\n", encoding="utf-8")
monkeypatch.delenv("VEDASTRO_API_ENDPOINT", raising=False)
monkeypatch.setenv("JYOTISH_SKIP_LOCAL_ENV", "1")
loaded = local_env.load_local_env(root=tmp_path)
assert loaded == []
assert "VEDASTRO_API_ENDPOINT" not in os.environ