config: Fix serialization of none

This commit is contained in:
Thomas Adamcik 2013-04-16 21:21:09 +02:00
parent ee40f0385a
commit f0131fdc93
2 changed files with 22 additions and 5 deletions

View File

@ -55,6 +55,8 @@ class ConfigValue(object):
def serialize(self, value, display=False):
"""Convert value back to string for saving."""
if value is None:
return b''
return bytes(value)
@ -142,9 +144,9 @@ class Boolean(ConfigValue):
def serialize(self, value, display=False):
if value:
return 'true'
return b'true'
else:
return 'false'
return b'false'
class List(ConfigValue):

View File

@ -23,6 +23,12 @@ class ConfigValueTest(unittest.TestCase):
value = types.ConfigValue()
self.assertIsInstance(value.serialize(object()), bytes)
def test_serialize_none(self):
value = types.ConfigValue()
result = value.serialize(None)
self.assertIsInstance(result, bytes)
self.assertEqual(b'', result)
def test_serialize_supports_display(self):
value = types.ConfigValue()
self.assertIsInstance(value.serialize(object(), display=True), bytes)
@ -177,10 +183,19 @@ class BooleanTest(unittest.TestCase):
self.assertRaises(ValueError, value.deserialize, 'sure')
self.assertRaises(ValueError, value.deserialize, '')
def test_serialize(self):
def test_serialize_true(self):
value = types.Boolean()
self.assertEqual('true', value.serialize(True))
self.assertEqual('false', value.serialize(False))
result = value.serialize(True)
self.assertEqual(b'true', result)
self.assertIsInstance(result, bytes)
def test_serialize_false(self):
value = types.Boolean()
result = value.serialize(False)
self.assertEqual(b'false', result)
self.assertIsInstance(result, bytes)
# TODO: test None or other invalid values into serialize?
class ListTest(unittest.TestCase):