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

`# ============================

`