config: Add optional support to Boolean type

This commit is contained in:
Stein Magnus Jodal 2014-07-15 00:33:30 +02:00
parent e79b38802d
commit dda06dd8de
3 changed files with 14 additions and 0 deletions

View File

@ -31,6 +31,10 @@ Feature release.
release, like Mopidy 0.18, or migrate the configuration to the new format by
hand.
**Configuration**
- Add ``optional=True`` support to :class:`mopidy.config.Boolean`.
**Logging**
- Fix proper decoding of exception messages that depends on the user's locale.

View File

@ -151,7 +151,13 @@ class Boolean(ConfigValue):
true_values = ('1', 'yes', 'true', 'on')
false_values = ('0', 'no', 'false', 'off')
def __init__(self, optional=False):
self._required = not optional
def deserialize(self, value):
validators.validate_required(value, self._required)
if not value:
return None
if value.lower() in self.true_values:
return True
elif value.lower() in self.false_values:

View File

@ -214,6 +214,10 @@ class BooleanTest(unittest.TestCase):
self.assertEqual(b'false', result)
self.assertIsInstance(result, bytes)
def test_deserialize_respects_optional(self):
value = types.Boolean(optional=True)
self.assertEqual(None, value.deserialize(''))
# TODO: test None or other invalid values into serialize?