Merge "Fixes convert_to_boolean logic"
This commit is contained in:
commit
8c280ea022
@ -258,20 +258,20 @@ def _validate_uuid(data, valid_values=None):
|
||||
|
||||
|
||||
def convert_to_boolean(data):
|
||||
try:
|
||||
i = int(data)
|
||||
if i in [True, False]:
|
||||
# Ensure that the value is True or False
|
||||
if i:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
except (ValueError, TypeError):
|
||||
if (data == "True" or data == "true"):
|
||||
if isinstance(data, basestring):
|
||||
val = data.lower()
|
||||
if val == "true" or val == "1":
|
||||
return True
|
||||
if (data == "False" or data == "false"):
|
||||
if val == "false" or val == "0":
|
||||
return False
|
||||
msg = _("'%s' is not boolean") % data
|
||||
elif isinstance(data, bool):
|
||||
return data
|
||||
elif isinstance(data, int):
|
||||
if data == 0:
|
||||
return False
|
||||
elif data == 1:
|
||||
return True
|
||||
msg = _("'%s' cannot be converted to boolean") % data
|
||||
raise q_exc.InvalidInput(error_message=msg)
|
||||
|
||||
|
||||
|
@ -243,6 +243,31 @@ class TestAttributes(unittest2.TestCase):
|
||||
self.assertEquals(msg, error)
|
||||
|
||||
|
||||
class TestConvertToBoolean(unittest2.TestCase):
|
||||
|
||||
def test_convert_to_boolean_bool(self):
|
||||
self.assertIs(attributes.convert_to_boolean(True), True)
|
||||
self.assertIs(attributes.convert_to_boolean(False), False)
|
||||
|
||||
def test_convert_to_boolean_int(self):
|
||||
self.assertIs(attributes.convert_to_boolean(0), False)
|
||||
self.assertIs(attributes.convert_to_boolean(1), True)
|
||||
self.assertRaises(q_exc.InvalidInput,
|
||||
attributes.convert_to_boolean,
|
||||
7)
|
||||
|
||||
def test_convert_to_boolean_str(self):
|
||||
self.assertIs(attributes.convert_to_boolean('True'), True)
|
||||
self.assertIs(attributes.convert_to_boolean('true'), True)
|
||||
self.assertIs(attributes.convert_to_boolean('False'), False)
|
||||
self.assertIs(attributes.convert_to_boolean('false'), False)
|
||||
self.assertIs(attributes.convert_to_boolean('0'), False)
|
||||
self.assertIs(attributes.convert_to_boolean('1'), True)
|
||||
self.assertRaises(q_exc.InvalidInput,
|
||||
attributes.convert_to_boolean,
|
||||
'7')
|
||||
|
||||
|
||||
class TestConvertKvp(unittest2.TestCase):
|
||||
|
||||
def test_convert_kvp_list_to_dict_succeeds_for_missing_values(self):
|
||||
|
Loading…
x
Reference in New Issue
Block a user