def test_optional_validation(path): builder = ConfigBuilder() builder.set_field_access_optional() builder.validate_field_type("cache.name", str) builder.validate_field_value("cache.host", "localhost") builder.transform_field_value("cache.host", lambda name: f"https://{name}") builder.parse_config(path)
def test_optional_access(path): builder = ConfigBuilder() builder.set_field_access_optional() builder.add_required_field("server.nokey") builder.add_required_fields(["cache.name", "test"]) config = builder.parse_config(path) assert config.nokey is None with pytest.raises(AttributeError): config.test assert config.server.nokey2 is None with pytest.raises(AttributeError): config.server.nokey assert config.cache.name2 is None with pytest.raises(AttributeError): config.cache.name