Beispiel #1
0
def test_missing_default():
    @dataclass
    class Config:
        param: Optional[int] = field(default=_DEFAULT, )

    cfg = Config()

    with pytest.raises(KeyError):
        _with_defaults(cfg, 'my-default')
Beispiel #2
0
def test_default_none():
    @dataclass
    class Config:
        param: Optional[int] = field(
            default=_DEFAULT,
            metadata={
                'my-default': None,
            },
        )

    cfg = Config()
    assert cfg.param is _DEFAULT

    cfg_with_defaults = _with_defaults(cfg, 'my-default')
    assert cfg_with_defaults.param is None
Beispiel #3
0
def test_change_default():
    # all params should be optional
    @dataclass
    class Config:
        foo: Optional[float] = field(
            default=cast(None, _DEFAULT),
            metadata={
                'validate': _optional(_chain(_of_type(int, float), _positive)),
                'test-default': 1234,
            },
        )

        def __post_init__(self):
            _validate(self)

    assert _with_defaults(Config(foo=1), 'test-default').foo == 1
Beispiel #4
0
def test_configuration():
    # all params should be optional
    config = Configuration()
    _with_defaults(config, 'client-default')
    _with_defaults(config, 'server-default')