config: Add List ConfigValue and tests.
This commit is contained in:
parent
452cf839c4
commit
d46f926f14
@ -1,5 +1,7 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import re
|
||||
|
||||
|
||||
def validate_choice(value, choices):
|
||||
"""Choice validation, normally called in config value's validate()."""
|
||||
@ -109,3 +111,14 @@ class Boolean(ConfigValue):
|
||||
return 'true'
|
||||
else:
|
||||
return 'false'
|
||||
|
||||
|
||||
class List(ConfigValue):
|
||||
def deserialize(self, value):
|
||||
if '\n' in value:
|
||||
return re.split(r'\s*\n\s*', value.strip())
|
||||
else:
|
||||
return re.split(r',\s*', value.strip())
|
||||
|
||||
def serialize(self, value):
|
||||
return '\n '.join(value)
|
||||
|
||||
@ -175,3 +175,20 @@ class BooleanTest(unittest.TestCase):
|
||||
def test_format_masks_secrets(self):
|
||||
value = config.Boolean(secret=True)
|
||||
self.assertEqual('********', value.format('true'))
|
||||
|
||||
|
||||
class ListTest(unittest.TestCase):
|
||||
def test_deserialize_splits_commas(self):
|
||||
value = config.List()
|
||||
self.assertEqual(['foo', 'bar', 'baz'],
|
||||
value.deserialize('foo, bar,baz'))
|
||||
|
||||
def test_deserialize_splits_newlines(self):
|
||||
value = config.List()
|
||||
self.assertEqual(['foo,bar', 'bar', 'baz'],
|
||||
value.deserialize('foo,bar\nbar\nbaz'))
|
||||
|
||||
def test_serialize_joins_by_newlines(self):
|
||||
value = config.List()
|
||||
self.assertRegexpMatches(value.serialize(['foo', 'bar', 'baz']),
|
||||
r'foo\n\s*bar\n\s*baz')
|
||||
|
||||
Loading…
Reference in New Issue
Block a user