From c1a6270eb8cb8562861ebb8b5840b6e7bb7a0982 Mon Sep 17 00:00:00 2001 From: Benedikt Bartscher Date: Mon, 28 Oct 2024 21:57:41 +0100 Subject: [PATCH] add test for EnvVar + minor typing improvement --- reflex/config.py | 2 +- tests/units/test_config.py | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/reflex/config.py b/reflex/config.py index 7b860bedd..7a7179588 100644 --- a/reflex/config.py +++ b/reflex/config.py @@ -318,7 +318,7 @@ class EnvVar(Generic[T]): self.type_ = type_ @property - def getenv(self) -> Any: + def getenv(self) -> Optional[str]: """Get the environment variable from os.environ. Returns: diff --git a/tests/units/test_config.py b/tests/units/test_config.py index cccca5c43..92760b164 100644 --- a/tests/units/test_config.py +++ b/tests/units/test_config.py @@ -8,6 +8,8 @@ import pytest import reflex as rx import reflex.config from reflex.config import ( + EnvVar, + env_var, environment, interpret_boolean_env, interpret_enum_env, @@ -243,3 +245,26 @@ def test_interpret_int_env() -> None: @pytest.mark.parametrize("value, expected", [("true", True), ("false", False)]) def test_interpret_bool_env(value: str, expected: bool) -> None: assert interpret_boolean_env(value, "TELEMETRY_ENABLED") == expected + + +def test_env_var(): + class TestEnv: + BLUBB: EnvVar[str] = env_var("default") + INTERNAL: EnvVar[str] = env_var("default", internal=True) + + assert TestEnv.BLUBB.get == "default" + assert TestEnv.BLUBB.name == "BLUBB" + TestEnv.BLUBB.set("new") + assert os.environ.get("BLUBB") == "new" + assert TestEnv.BLUBB.get == "new" + TestEnv.BLUBB.set(None) + assert "BLUBB" not in os.environ + + assert TestEnv.INTERNAL.get == "default" + assert TestEnv.INTERNAL.name == "__INTERNAL" + TestEnv.INTERNAL.set("new") + assert os.environ.get("__INTERNAL") == "new" + assert TestEnv.INTERNAL.get == "new" + assert TestEnv.INTERNAL.getenv == "new" + TestEnv.INTERNAL.set(None) + assert "__INTERNAL" not in os.environ