diff --git a/lib/cli.py b/lib/cli.py index f8abe44ff6c00bda67228fdb966dddd111f1a9e1..f4f32db5f891ceaa2dc76824026223802dda860c 100644 --- a/lib/cli.py +++ b/lib/cli.py @@ -259,20 +259,21 @@ def _SplitKeyVal(opt, data): NO_PREFIX = "no_" UN_PREFIX = "-" kv_dict = {} - for elem in data.split(","): - if "=" in elem: - key, val = elem.split("=", 1) - else: - if elem.startswith(NO_PREFIX): - key, val = elem[len(NO_PREFIX):], False - elif elem.startswith(UN_PREFIX): - key, val = elem[len(UN_PREFIX):], None + if data: + for elem in data.split(","): + if "=" in elem: + key, val = elem.split("=", 1) else: - key, val = elem, True - if key in kv_dict: - raise errors.ParameterError("Duplicate key '%s' in option %s" % - (key, opt)) - kv_dict[key] = val + if elem.startswith(NO_PREFIX): + key, val = elem[len(NO_PREFIX):], False + elif elem.startswith(UN_PREFIX): + key, val = elem[len(UN_PREFIX):], None + else: + key, val = elem, True + if key in kv_dict: + raise errors.ParameterError("Duplicate key '%s' in option %s" % + (key, opt)) + kv_dict[key] = val return kv_dict diff --git a/test/ganeti.cli_unittest.py b/test/ganeti.cli_unittest.py index 29734ae0c2b1575faccc9c0f4f0bf27af5428bc7..b86486bf479936fc60c001c3346b757cf585db12 100755 --- a/test/ganeti.cli_unittest.py +++ b/test/ganeti.cli_unittest.py @@ -75,6 +75,10 @@ class TestSplitKeyVal(unittest.TestCase): self.failUnlessRaises(ParameterError, cli._SplitKeyVal, "option", data) + def testEmptyData(self): + """Test how we handle splitting an empty string""" + self.failUnlessEqual(cli._SplitKeyVal("option", ""), {}) + class TestToStream(unittest.TestCase): """Thes the ToStream functions"""