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)
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'
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)
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)
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)
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"
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"
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
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
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() == """\
def test_Schema_validate_validation(): schema = Schema() config = Config() validation = Validation() result = schema.validate(config, validation=validation) assert validation is result
def test_Schema_validate_no_validation(): schema = Schema() config = Config() assert isinstance(schema.validate(config), Validation)