diff --git a/osc_lib/cli/parseractions.py b/osc_lib/cli/parseractions.py index 8125c18..0565372 100644 --- a/osc_lib/cli/parseractions.py +++ b/osc_lib/cli/parseractions.py @@ -35,7 +35,9 @@ class KeyValueAction(argparse.Action): if '=' in values: getattr(namespace, self.dest, {}).update([values.split('=', 1)]) else: - getattr(namespace, self.dest, {}).pop(values, None) + msg = _("Expected 'key=value' type, " + "but got: %s") % (str(values)) + raise argparse.ArgumentTypeError(msg) class MultiKeyValueAction(argparse.Action): diff --git a/osc_lib/tests/cli/test_parseractions.py b/osc_lib/tests/cli/test_parseractions.py index 3225f93..beff04a 100644 --- a/osc_lib/tests/cli/test_parseractions.py +++ b/osc_lib/tests/cli/test_parseractions.py @@ -49,16 +49,13 @@ class TestKeyValueAction(utils.TestCase): self.assertDictEqual(expect, actual) def test_error_values(self): - results = self.parser.parse_args([ - '--property', 'red', - '--property', 'green=100%', - '--property', 'blue', - ]) - - actual = getattr(results, 'property', {}) - # There should be no red or blue - expect = {'green': '100%', 'format': '#rgb'} - self.assertDictEqual(expect, actual) + self.assertRaises( + argparse.ArgumentTypeError, + self.parser.parse_args, + [ + '--property', 'red', + ] + ) class TestMultiKeyValueAction(utils.TestCase):