From ee40f0385a969fffbe8ec8fc378ce79a0db11d8d Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Tue, 16 Apr 2013 00:14:58 +0200 Subject: [PATCH] config: Remove format from types API --- mopidy/config/schemas.py | 4 ++-- mopidy/config/types.py | 25 +++++++++---------------- tests/config/schemas_test.py | 12 ++++++------ tests/config/types_test.py | 13 ++++++------- 4 files changed, 23 insertions(+), 31 deletions(-) diff --git a/mopidy/config/schemas.py b/mopidy/config/schemas.py index 1a0c083d..ba1d5dad 100644 --- a/mopidy/config/schemas.py +++ b/mopidy/config/schemas.py @@ -96,7 +96,7 @@ class ConfigSchema(object): value = values.get(key) if value is not None: lines.append('%s = %s' % ( - key, self._schema[key].format(value))) + key, self._schema[key].serialize(value, display=True))) return '\n'.join(lines) @@ -142,5 +142,5 @@ class LogLevelConfigSchema(object): for key, value in sorted(values.items()): if value is not None: lines.append('%s = %s' % ( - key, self._config_value.format(value))) + key, self._config_value.serialize(value, display=True))) return '\n'.join(lines) diff --git a/mopidy/config/types.py b/mopidy/config/types.py index 92ccb89a..7e943d27 100644 --- a/mopidy/config/types.py +++ b/mopidy/config/types.py @@ -53,14 +53,10 @@ class ConfigValue(object): """Cast raw string to appropriate type.""" return value - def serialize(self, value): + def serialize(self, value, display=False): """Convert value back to string for saving.""" return bytes(value) - def format(self, value): - """Format value for display.""" - return self.serialize(value) - class String(ConfigValue): """String value. @@ -79,7 +75,7 @@ class String(ConfigValue): return None return value - def serialize(self, value): + def serialize(self, value, display=False): if value is None: return b'' return encode(value) @@ -101,16 +97,13 @@ class Secret(ConfigValue): return None return value - def serialize(self, value): + def serialize(self, value, display=False): if value is None: return b'' + elif display: + return b'********' return value - def format(self, value): - if value is None: - return b'' - return b'********' - class Integer(ConfigValue): """Integer value.""" @@ -147,7 +140,7 @@ class Boolean(ConfigValue): return False raise ValueError('invalid value for boolean: %r' % value) - def serialize(self, value): + def serialize(self, value, display=False): if value: return 'true' else: @@ -173,7 +166,7 @@ class List(ConfigValue): validators.validate_required(values, self._required) return tuple(values) - def serialize(self, value): + def serialize(self, value, display=False): return b'\n ' + b'\n '.join(encode(v) for v in value if v) @@ -208,7 +201,7 @@ class Hostname(ConfigValue): def __init__(self, optional=False): self._required = not optional - def deserialize(self, value): + def deserialize(self, value, display=False): validators.validate_required(value, self._required) if not value.strip(): return None @@ -259,7 +252,7 @@ class Path(ConfigValue): return None return ExpandedPath(value) - def serialize(self, value): + def serialize(self, value, display=False): if isinstance(value, ExpandedPath): return value.original return value diff --git a/tests/config/schemas_test.py b/tests/config/schemas_test.py index 7f4dae4b..8ee9ac50 100644 --- a/tests/config/schemas_test.py +++ b/tests/config/schemas_test.py @@ -17,18 +17,18 @@ class ConfigSchemaTest(unittest.TestCase): self.values = {'bar': '123', 'foo': '456', 'baz': '678'} def test_format(self): - self.schema['foo'].format.return_value = 'qwe' - self.schema['bar'].format.return_value = 'asd' - self.schema['baz'].format.return_value = 'zxc' + self.schema['foo'].serialize.return_value = 'qwe' + self.schema['bar'].serialize.return_value = 'asd' + self.schema['baz'].serialize.return_value = 'zxc' expected = ['[test]', 'foo = qwe', 'bar = asd', 'baz = zxc'] result = self.schema.format(self.values) self.assertEqual('\n'.join(expected), result) def test_format_unkwown_value(self): - self.schema['foo'].format.return_value = 'qwe' - self.schema['bar'].format.return_value = 'asd' - self.schema['baz'].format.return_value = 'zxc' + self.schema['foo'].serialize.return_value = 'qwe' + self.schema['bar'].serialize.return_value = 'asd' + self.schema['baz'].serialize.return_value = 'zxc' self.values['unknown'] = 'rty' result = self.schema.format(self.values) diff --git a/tests/config/types_test.py b/tests/config/types_test.py index e8b026d3..2f3191bf 100644 --- a/tests/config/types_test.py +++ b/tests/config/types_test.py @@ -23,10 +23,9 @@ class ConfigValueTest(unittest.TestCase): value = types.ConfigValue() self.assertIsInstance(value.serialize(object()), bytes) - def test_format_uses_serialize(self): + def test_serialize_supports_display(self): value = types.ConfigValue() - obj = object() - self.assertEqual(value.serialize(obj), value.format(obj)) + self.assertIsInstance(value.serialize(object(), display=True), bytes) class StringTest(unittest.TestCase): @@ -117,15 +116,15 @@ class SecretTest(unittest.TestCase): self.assertIsInstance(result, bytes) self.assertEqual(b'', result) - def test_format_masks_value(self): + def test_serialize_for_display_masks_value(self): value = types.Secret() - result = value.format('s3cret') + result = value.serialize('s3cret', display=True) self.assertIsInstance(result, bytes) self.assertEqual(b'********', result) - def test_format_none(self): + def test_serialize_none_for_display(self): value = types.Secret() - result = value.format(None) + result = value.serialize(None, display=True) self.assertIsInstance(result, bytes) self.assertEqual(b'', result)