config: Fix serialization of none
This commit is contained in:
parent
ee40f0385a
commit
f0131fdc93
@ -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):
|
||||
|
||||
@ -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):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user