Fixed handling of unknown params in Configuration

This commit is contained in:
Maxim Kulkin
2013-11-07 17:52:36 +04:00
parent 368f6e8f53
commit 602007ab88
2 changed files with 27 additions and 5 deletions

View File

@@ -129,11 +129,12 @@ class Configuration(object):
if self.schema:
param_schema = self.schema.get_parameter(name, section=section)
type_validator = TypeValidatorRegistry.get_validator(
param_schema.type)
type_validation_result = type_validator.validate(value)
if not isinstance(type_validation_result, InvalidValueError):
value = type_validation_result
if param_schema:
type_validator = TypeValidatorRegistry.get_validator(
param_schema.type)
type_validation_result = type_validator.validate(value)
if not isinstance(type_validation_result, InvalidValueError):
value = type_validation_result
self._cache[fullname] = value
@@ -153,6 +154,9 @@ class Configuration(object):
param_schema = self.schema.get_parameter(name, section=section)
if not param_schema:
return None
type_validator = TypeValidatorRegistry.get_validator(
param_schema.type)
type_validation_result = type_validator.validate(value)

View File

@@ -239,6 +239,15 @@ class ConfigurationTests(unittest.TestCase):
self.assertEqual(456, c.get('param1'))
def test_type_for_unknown_param(self):
schema = ConfigSchema('test', '1.0', 'ini', [])
c = Configuration(schema)
c.set('param1', '123')
self.assertEqual('123', c.get('param1'))
def test_typed_param_with_invalid_value_returns_string_value(self):
schema = ConfigSchema('test', '1.0', 'ini', [
ConfigParameterSchema('param1', type='integer', section='DEFAULT')
@@ -282,3 +291,12 @@ class ConfigurationTests(unittest.TestCase):
c.set('param1', 'abc')
self.assertTrue(isinstance(c.validate('param1'), InvalidValueError))
def test_validate_returns_none_for_unknown_param(self):
schema = ConfigSchema('test', '1.0', 'ini', [])
c = Configuration(schema)
c.set('param1', '123')
self.assertIsNone(c.validate('param1'))