| 407 | |
| 408 | |
| 409 | def test_env_var(): |
| 410 | class TestEnv: |
| 411 | BLUBB: EnvVar[str] = env_var("default") |
| 412 | INTERNAL: EnvVar[str] = env_var("default", internal=True) |
| 413 | BOOLEAN: EnvVar[bool] = env_var(False) |
| 414 | LIST: EnvVar[list[int]] = env_var([1, 2, 3]) |
| 415 | |
| 416 | assert TestEnv.BLUBB.get() == "default" |
| 417 | assert TestEnv.BLUBB.name == "BLUBB" |
| 418 | TestEnv.BLUBB.set("new") |
| 419 | assert os.environ.get("BLUBB") == "new" |
| 420 | assert TestEnv.BLUBB.get() == "new" |
| 421 | TestEnv.BLUBB.set(None) |
| 422 | assert "BLUBB" not in os.environ |
| 423 | |
| 424 | assert TestEnv.INTERNAL.get() == "default" |
| 425 | assert TestEnv.INTERNAL.name == "__INTERNAL" |
| 426 | TestEnv.INTERNAL.set("new") |
| 427 | assert os.environ.get("__INTERNAL") == "new" |
| 428 | assert TestEnv.INTERNAL.get() == "new" |
| 429 | assert TestEnv.INTERNAL.getenv() == "new" |
| 430 | TestEnv.INTERNAL.set(None) |
| 431 | assert "__INTERNAL" not in os.environ |
| 432 | |
| 433 | assert TestEnv.BOOLEAN.get() is False |
| 434 | assert TestEnv.BOOLEAN.name == "BOOLEAN" |
| 435 | TestEnv.BOOLEAN.set(True) |
| 436 | assert os.environ.get("BOOLEAN") == "True" |
| 437 | assert TestEnv.BOOLEAN.get() is True |
| 438 | TestEnv.BOOLEAN.set(False) |
| 439 | assert os.environ.get("BOOLEAN") == "False" |
| 440 | assert TestEnv.BOOLEAN.get() is False |
| 441 | TestEnv.BOOLEAN.set(None) |
| 442 | assert "BOOLEAN" not in os.environ |
| 443 | |
| 444 | assert TestEnv.LIST.get() == [1, 2, 3] |
| 445 | assert TestEnv.LIST.name == "LIST" |
| 446 | TestEnv.LIST.set([4, 5, 6]) |
| 447 | assert os.environ.get("LIST") == "4:5:6" |
| 448 | assert TestEnv.LIST.get() == [4, 5, 6] |
| 449 | TestEnv.LIST.set(None) |
| 450 | assert "LIST" not in os.environ |
| 451 | |
| 452 | |
| 453 | @pytest.fixture |