Skip to content

Commit

Permalink
Env Vars: Add Support for |-syntax Optional Types
Browse files Browse the repository at this point in the history
  • Loading branch information
ric-evans committed Sep 13, 2024
1 parent 3f8fa5d commit ff77779
Showing 1 changed file with 37 additions and 7 deletions.
44 changes: 37 additions & 7 deletions tests/enviro_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import shutil
import tempfile
import unittest
from typing import Any, Dict, FrozenSet, List, Optional, Set
from typing import Any, Dict, FrozenSet, List, Optional, Set, Union

import pytest
from typing_extensions import Final
Expand Down Expand Up @@ -529,39 +529,69 @@ class Config:
assert config.FOO == {"bar": 2, "baz": 3, "foo": 1}


@pytest.mark.parametrize(
"typo",
[
Optional[bool],
Union[bool, None],
Union[None, bool],
bool | None,
None | bool,
],
)
@pytest.mark.usefixtures("isolated_env")
def test_052__optional_bool() -> None:
def test_060__optional_bool(typo) -> None:
"""Test normal use case."""

@dc.dataclass(frozen=True)
class Config:
FOO: Optional[bool]
FOO: typo # type: ignore

os.environ["FOO"] = "T"
config = from_environment_as_dataclass(Config)
assert config.FOO is True


@pytest.mark.parametrize(
"typo",
[
Optional[Dict[str, int]],
Union[Dict[str, int], None],
Union[None, Dict[str, int]],
Dict[str, int] | None,
None | Dict[str, int],
],
)
@pytest.mark.usefixtures("isolated_env")
def test_053__optional_dict_str_int() -> None:
def test_061__optional_dict_str_int(typo) -> None:
"""Test normal use case."""

@dc.dataclass(frozen=True)
class Config:
FOO: Optional[Dict[str, int]]
FOO: typo # type: ignore

os.environ["FOO"] = "foo=1 bar=2 baz=3"
config = from_environment_as_dataclass(Config)
assert config.FOO == {"bar": 2, "baz": 3, "foo": 1}


@pytest.mark.parametrize(
"typo",
[
Optional[dict],
Union[dict, None],
Union[None, dict],
dict | None,
None | dict,
],
)
@pytest.mark.usefixtures("isolated_env")
def test_054__optional_dict() -> None:
def test_062__optional_dict(typo) -> None:
"""Test normal use case."""

@dc.dataclass(frozen=True)
class Config:
FOO: Optional[dict]
FOO: typo # type: ignore

os.environ["FOO"] = "foo=1 bar=2 baz=3"
config = from_environment_as_dataclass(Config)
Expand Down

0 comments on commit ff77779

Please sign in to comment.