37 lines
1.8 KiB
Python
37 lines
1.8 KiB
Python
from pathlib import Path
|
|
|
|
from config.env import load_env_file, load_project_environment
|
|
|
|
|
|
def test_env_file_does_not_override_injected_environment(tmp_path, monkeypatch):
|
|
env_file = tmp_path / ".env.local"
|
|
env_file.write_text("EXISTING=from-file\nNEW_VALUE='loaded locally'\n", encoding="utf-8")
|
|
monkeypatch.setenv("EXISTING", "from-server")
|
|
monkeypatch.delenv("NEW_VALUE", raising=False)
|
|
assert load_env_file(env_file) is True
|
|
assert __import__("os").environ["EXISTING"] == "from-server"
|
|
assert __import__("os").environ["NEW_VALUE"] == "loaded locally"
|
|
|
|
|
|
def test_environment_selects_local_for_dev_and_env_for_prod(tmp_path, monkeypatch):
|
|
(tmp_path / ".env.local").write_text("SELECTED_ENV=local\n", encoding="utf-8")
|
|
(tmp_path / ".env").write_text("SELECTED_ENV=production\n", encoding="utf-8")
|
|
monkeypatch.delenv("DJANGO_ENV_FILE", raising=False)
|
|
monkeypatch.delenv("SELECTED_ENV", raising=False)
|
|
monkeypatch.setenv("DJANGO_SETTINGS_MODULE", "config.settings.dev")
|
|
assert load_project_environment(Path(tmp_path)) == tmp_path / ".env.local"
|
|
assert __import__("os").environ["SELECTED_ENV"] == "local"
|
|
monkeypatch.delenv("SELECTED_ENV")
|
|
monkeypatch.setenv("DJANGO_SETTINGS_MODULE", "config.settings.prod")
|
|
assert load_project_environment(Path(tmp_path)) == tmp_path / ".env"
|
|
assert __import__("os").environ["SELECTED_ENV"] == "production"
|
|
|
|
|
|
def test_explicit_environment_file_can_be_selected(tmp_path, monkeypatch):
|
|
custom = tmp_path / "server.env"
|
|
custom.write_text("CUSTOM_SERVER_VALUE=yes\n", encoding="utf-8")
|
|
monkeypatch.setenv("DJANGO_ENV_FILE", "server.env")
|
|
monkeypatch.delenv("CUSTOM_SERVER_VALUE", raising=False)
|
|
assert load_project_environment(Path(tmp_path)) == custom
|
|
assert __import__("os").environ["CUSTOM_SERVER_VALUE"] == "yes"
|