bpo-16970: Adding error message for invalid args (GH-14844) · python/cpython@1cc7032 (original) (raw)
`@@ -4263,7 +4263,6 @@ class TestHelpSubparsersWithHelpOrdering(HelpTestCase):
`
4263
4263
``
4264
4264
``
4265
4265
`class TestHelpMetavarTypeFormatter(HelpTestCase):
`
4266
``
`-
""""""
`
4267
4266
``
4268
4267
`def custom_type(string):
`
4269
4268
`return string
`
`@@ -5150,6 +5149,35 @@ def test_nargs_3_metavar_length2(self):
`
5150
5149
`def test_nargs_3_metavar_length3(self):
`
5151
5150
`self.do_test_no_exception(nargs=3, metavar=("1", "2", "3"))
`
5152
5151
``
``
5152
+
``
5153
`+
class TestInvalidNargs(TestCase):
`
``
5154
+
``
5155
`+
EXPECTED_INVALID_MESSAGE = "invalid nargs value"
`
``
5156
`+
EXPECTED_RANGE_MESSAGE = ("nargs for store actions must be != 0; if you "
`
``
5157
`+
"have nothing to store, actions such as store "
`
``
5158
`+
"true or store const may be more appropriate")
`
``
5159
+
``
5160
`+
def do_test_range_exception(self, nargs):
`
``
5161
`+
parser = argparse.ArgumentParser()
`
``
5162
`+
with self.assertRaises(ValueError) as cm:
`
``
5163
`+
parser.add_argument("--foo", nargs=nargs)
`
``
5164
`+
self.assertEqual(cm.exception.args[0], self.EXPECTED_RANGE_MESSAGE)
`
``
5165
+
``
5166
`+
def do_test_invalid_exception(self, nargs):
`
``
5167
`+
parser = argparse.ArgumentParser()
`
``
5168
`+
with self.assertRaises(ValueError) as cm:
`
``
5169
`+
parser.add_argument("--foo", nargs=nargs)
`
``
5170
`+
self.assertEqual(cm.exception.args[0], self.EXPECTED_INVALID_MESSAGE)
`
``
5171
+
``
5172
`+
Unit tests for different values of nargs
`
``
5173
+
``
5174
`+
def test_nargs_alphabetic(self):
`
``
5175
`+
self.do_test_invalid_exception(nargs='a')
`
``
5176
`+
self.do_test_invalid_exception(nargs="abcd")
`
``
5177
+
``
5178
`+
def test_nargs_zero(self):
`
``
5179
`+
self.do_test_range_exception(nargs=0)
`
``
5180
+
5153
5181
`# ============================
`
5154
5182
`# from argparse import * tests
`
5155
5183
`# ============================
`