Merge "Raise user-friendly exceptions in str2dict"
This commit is contained in:
@@ -105,9 +105,15 @@ def str2dict(strdict):
|
|||||||
|
|
||||||
:param strdict: key1=value1,key2=value2
|
:param strdict: key1=value1,key2=value2
|
||||||
"""
|
"""
|
||||||
if not strdict:
|
result = {}
|
||||||
return {}
|
if strdict:
|
||||||
return dict([kv.split('=', 1) for kv in strdict.split(',')])
|
for kv in strdict.split(','):
|
||||||
|
key, sep, value = kv.partition('=')
|
||||||
|
if not sep:
|
||||||
|
msg = _("invalid key-value '%s', expected format: key=value")
|
||||||
|
raise argparse.ArgumentTypeError(msg % kv)
|
||||||
|
result[key] = value
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
def http_log_req(_logger, args, kwargs):
|
def http_log_req(_logger, args, kwargs):
|
||||||
|
@@ -13,6 +13,8 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
|
||||||
import testtools
|
import testtools
|
||||||
|
|
||||||
from neutronclient.common import exceptions
|
from neutronclient.common import exceptions
|
||||||
@@ -42,6 +44,11 @@ class TestUtils(testtools.TestCase):
|
|||||||
expected = {}
|
expected = {}
|
||||||
self.assertEqual(expected, utils.str2dict(input_str))
|
self.assertEqual(expected, utils.str2dict(input_str))
|
||||||
|
|
||||||
|
def test_invalid_string_to_dictionary(self):
|
||||||
|
input_str = 'invalid'
|
||||||
|
self.assertRaises(argparse.ArgumentTypeError,
|
||||||
|
utils.str2dict, input_str)
|
||||||
|
|
||||||
def test_get_dict_item_properties(self):
|
def test_get_dict_item_properties(self):
|
||||||
item = {'name': 'test_name', 'id': 'test_id'}
|
item = {'name': 'test_name', 'id': 'test_id'}
|
||||||
fields = ('name', 'id')
|
fields = ('name', 'id')
|
||||||
|
Reference in New Issue
Block a user