Пример #1
0
def test_Schema_unexpected_section_error():
    schema = Schema()
    schema['x'] = Int()
    config = Config()
    config['x'] = {}
    with pytest.raises(UnexpectedSectionError):
        schema.validate(config, raise_on_error=True)
Пример #2
0
def test_Schema_PATH_add_default(tmpdir, defaults):
    fn_config = tmpdir.join("PATH_add_default.config").strpath
    fn_schema = tmpdir.join("PATH_add_default.schema").strpath
    dirname = os.path.dirname(fn_config)

    config = Config(defaults=defaults)
    schema = Schema()

    with open(fn_config, "w") as f_out:
        f_out.write("""\
[sub]
""")
    config.read(fn_config, merge=True)

    with open(fn_schema, "w") as f_out:
        f_out.write("""\
a = Str(default=PATH.dirname + 'a')
[sub]
    b = Str(default=PATH.dirname + 'b')
""")
    schema.read(fn_schema, merge=True)

    schema.validate(config)
    assert config['a'] == dirname + 'a'
    assert config['sub']['b'] == dirname + 'b'
Пример #3
0
def test_Schema_validate_no_raise():
    schema = Schema()
    schema["x"] = IntChoice(choices=(1, 2))
    config = Config()
    config["x"] = 3
    validation = schema.validate(config, raise_on_error=False)
    assert isinstance(validation["x"], InvalidChoiceError)
Пример #4
0
def test_Schema_validate_raise():
    schema = Schema()
    schema["x"] = IntChoice(choices=(1, 2))
    config = Config()
    config["x"] = 3
    with pytest.raises(InvalidChoiceError):
        validation = schema.validate(config, raise_on_error=True)
Пример #5
0
def simple_validation(simple_schema_content, simple_section_content):
    schema = Schema(simple_schema_content)
    simple_section_content['a'] = -10
    simple_section_content['sub']['sa'] = 100.3
    simple_section_content['sub']['sb'] = "abc"
    simple_section_content['sub']['sc'] = True
    simple_section_content['sub']['subsub']['ssx'] = "omega"
    simple_section_content['sub']['subsub']['ssy'] = []
    config = Config(simple_section_content)
    return schema.validate(config)
Пример #6
0
def simple_validation(simple_schema_content, simple_section_content):
    schema = Schema(simple_schema_content)
    simple_section_content['a'] = -10
    simple_section_content['sub']['sa'] = 100.3
    simple_section_content['sub']['sb'] = "abc"
    simple_section_content['sub']['sc'] = True
    simple_section_content['sub']['subsub']['ssx'] = "omega"
    simple_section_content['sub']['subsub']['ssy'] = []
    config = Config(simple_section_content)
    return schema.validate(config)
Пример #7
0
def test_Config_err_disabled_macros_on_validation():
    from zirkon.config import ROOT
    config = Config(macros=False)
    schema = Schema()
    schema['x'] = Int()
    schema['y'] = Int(min=ROOT['x'] + 2)
    config['x'] = 3
    config['y'] = 5
    with pytest.raises(ValueError) as exc_info:
        validation = schema.validate(config)
    assert str(exc_info.value) == "cannot evaluate ROOT['x'] + 2: macros are not enabled"
Пример #8
0
def test_Config_err_disabled_macros_on_validation():
    from zirkon.config import ROOT
    config = Config(macros=False)
    schema = Schema()
    schema['x'] = Int()
    schema['y'] = Int(min=ROOT['x'] + 2)
    config['x'] = 3
    config['y'] = 5
    with pytest.raises(ValueError) as exc_info:
        validation = schema.validate(config)
    assert str(exc_info.value
               ) == "cannot evaluate ROOT['x'] + 2: macros are not enabled"
Пример #9
0
def test_Schema_defaults_defined_in_defaults(use_defaults, has_default):
    config = Config(defaults=True)
    config.defaults["x"] = 10

    schema = Schema(use_defaults=use_defaults)
    int_kwargs = {}
    if has_default:
        int_kwargs["default"] = 100
    schema["x"] = Int(**int_kwargs)

    assert not schema.validate(config)
    assert "x" in config.defaults
    assert config["x"] == 10
Пример #10
0
def test_Schema_defaults_undefined(defaults, use_defaults, has_default):
    config = Config(defaults=defaults)

    schema = Schema(use_defaults=use_defaults)
    int_kwargs = {}
    if has_default:
        int_kwargs["default"] = 100
    schema["x"] = Int(**int_kwargs)

    if has_default:
        assert not schema.validate(config)
    else:
        assert schema.validate(config)

    if has_default:
        assert "x" in config
        if defaults:
            if use_defaults:
                assert "x" in config.defaults
            else:
                assert "x" not in config.defaults
    else:
        assert "x" not in config
Пример #11
0
def test_Config_use_defaults_False(string_io, use_defaults):
    config = Config()
    schema = Schema(use_defaults=use_defaults)
    schema['x'] = Int(default=10)
    schema['sub'] = {'y': Int(default=20)}
    schema['sub']['sub'] = {'z': Int(default=30)}
    validation = schema.validate(config)
    assert config['x'] == 10
    assert config['sub']['y'] == 20
    assert config['sub']['sub']['z'] == 30
    assert not validation
    config.dump(string_io)
    if use_defaults:
        assert string_io.getvalue() == """\
[sub]
    [sub]
"""
    else:
        assert string_io.getvalue() == """\
Пример #12
0
def test_Config_use_defaults_False(string_io, use_defaults):
    config = Config()
    schema = Schema(use_defaults=use_defaults)
    schema['x'] = Int(default=10)
    schema['sub'] = {'y': Int(default=20)}
    schema['sub']['sub'] = {'z': Int(default=30)}
    validation = schema.validate(config)
    assert config['x'] == 10
    assert config['sub']['y'] == 20
    assert config['sub']['sub']['z'] == 30
    assert not validation
    config.dump(string_io)
    if use_defaults:
        assert string_io.getvalue() == """\
[sub]
    [sub]
"""
    else:
        assert string_io.getvalue() == """\
Пример #13
0
def test_Schema_validate_validation():
    schema = Schema()
    config = Config()
    validation = Validation()
    result = schema.validate(config, validation=validation)
    assert validation is result
Пример #14
0
def test_Schema_validate_no_validation():
    schema = Schema()
    config = Config()
    assert isinstance(schema.validate(config), Validation)