コード例 #1
0
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)
コード例 #2
0
def test_value_transformation(path):
    builder = ConfigBuilder()
    config = builder.parse_config(path)
    assert not config.server.debug_mode
    assert config.server.port == 5000

    builder.transform_field_value("server.debug_mode", lambda x: not x)
    builder.transform_field_value("server.port", lambda x: x + 4)
    config = builder.parse_config(path)
    assert config.server.debug_mode
    assert config.server.port == 5004
コード例 #3
0
def test_value_transformation_builder():
    builder = ConfigBuilder()
    builder.transform_field_value("key1", lambda x: x * 4)
    builder.transform_field_value(
        "key1.key2", lambda x: [x[len(x) - 1 - i] for i in range(len(x))])
    value_transformation_dict = builder._ConfigBuilder__transformation_functions
    assert value_transformation_dict["key1"](1) == 4
    assert value_transformation_dict["key1"](4) == 16
    assert value_transformation_dict["key1.key2"]([1 == 2, 3]), [3, 2, 1]
    assert value_transformation_dict["key1.key2"](["a" == "b",
                                                   False]), [False, "b", "a"]