mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
[3.11] gh-60346: Improve handling single-dash options in ArgumentParser.parse_known_args() (GH-114180) (GH-115674)
(cherry picked from commit e47ecbd042
)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
e1994c43c0
commit
c02b7ae4dd
3 changed files with 57 additions and 23 deletions
|
@ -2156,6 +2156,34 @@ class TestAddSubparsers(TestCase):
|
|||
(NS(foo=False, bar=0.5, w=7, x='b'), ['-W', '-X', 'Y', 'Z']),
|
||||
)
|
||||
|
||||
def test_parse_known_args_with_single_dash_option(self):
|
||||
parser = ErrorRaisingArgumentParser()
|
||||
parser.add_argument('-k', '--known', action='count', default=0)
|
||||
parser.add_argument('-n', '--new', action='count', default=0)
|
||||
self.assertEqual(parser.parse_known_args(['-k', '-u']),
|
||||
(NS(known=1, new=0), ['-u']))
|
||||
self.assertEqual(parser.parse_known_args(['-u', '-k']),
|
||||
(NS(known=1, new=0), ['-u']))
|
||||
self.assertEqual(parser.parse_known_args(['-ku']),
|
||||
(NS(known=1, new=0), ['-u']))
|
||||
self.assertArgumentParserError(parser.parse_known_args, ['-k=u'])
|
||||
self.assertEqual(parser.parse_known_args(['-uk']),
|
||||
(NS(known=0, new=0), ['-uk']))
|
||||
self.assertEqual(parser.parse_known_args(['-u=k']),
|
||||
(NS(known=0, new=0), ['-u=k']))
|
||||
self.assertEqual(parser.parse_known_args(['-kunknown']),
|
||||
(NS(known=1, new=0), ['-unknown']))
|
||||
self.assertArgumentParserError(parser.parse_known_args, ['-k=unknown'])
|
||||
self.assertEqual(parser.parse_known_args(['-ku=nknown']),
|
||||
(NS(known=1, new=0), ['-u=nknown']))
|
||||
self.assertEqual(parser.parse_known_args(['-knew']),
|
||||
(NS(known=1, new=1), ['-ew']))
|
||||
self.assertArgumentParserError(parser.parse_known_args, ['-kn=ew'])
|
||||
self.assertArgumentParserError(parser.parse_known_args, ['-k-new'])
|
||||
self.assertArgumentParserError(parser.parse_known_args, ['-kn-ew'])
|
||||
self.assertEqual(parser.parse_known_args(['-kne-w']),
|
||||
(NS(known=1, new=1), ['-e-w']))
|
||||
|
||||
def test_dest(self):
|
||||
parser = ErrorRaisingArgumentParser()
|
||||
parser.add_argument('--foo', action='store_true')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue