8000 gh-95468: Add more tests for "--" (double dash) in test_argparse (GH-… · miss-islington/cpython@0ef1ad7 · GitHub
[go: up one dir, main page]

Skip to content

Commit 0ef1ad7

Browse files
serhiy-storchakamiss-islington
authored andcommitted
pythongh-95468: Add more tests for "--" (double dash) in test_argparse (pythonGH-124274)
(cherry picked from commit baa3550) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
1 parent 6387016 commit 0ef1ad7

File tree

1 file changed

+41
-2
lines changed

1 file changed

+41
-2
lines changed

Lib/test/test_argparse.py

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5783,7 +5783,9 @@ def test_zero_or_more_optional(self):
57835783
args = parser.parse_args([])
57845784
self.assertEqual(NS(x=[]), args)
57855785

5786-
def test_double_dash(self):
5786+
5787+
class TestDoubleDash(TestCase):
5788+
def test_single_argument_option(self):
57875789
parser = argparse.ArgumentParser(exit_on_error=False)
57885790
parser.add_argument('-f', '--foo')
57895791
parser.add_argument('bar', nargs='*')
@@ -5807,6 +5809,7 @@ def test_double_dash(self):
58075809
args = parser.parse_args(['a', '--', 'b', '--', 'c', '--foo', 'd'])
58085810
self.assertEqual(NS(foo=None, bar=['a', 'b', '--', 'c', '--foo', 'd']), args)
58095811

5812+
def test_multiple_argument_option(self):
58105813
parser = argparse.ArgumentParser(exit_on_error=False)
58115814
parser.add_argument('-f', '--foo', nargs='*')
58125815
parser.add_argument('bar', nargs='*')
@@ -5829,6 +5832,7 @@ def test_double_dash(self):
58295832
self.assertEqual(NS(foo=['c'], bar=['a', 'b']), args)
58305833
self.assertEqual(argv, ['--', 'd'])
58315834

5835+
def test_multiple_double_dashes(self):
58325836
parser = argparse.ArgumentParser(exit_on_error=False)
58335837
parser.add_argument('foo')
58345838
parser.add_argument('bar', nargs='*')
@@ -5844,9 +5848,10 @@ def test_double_dash(self):
58445848
args = parser.parse_args(['--', '--', 'a', '--', 'b', 'c'])
58455849
self.assertEqual(NS(foo='--', bar=['a', '--', 'b', 'c']), args)
58465850

5851+
def test_remainder(self):
58475852
parser = argparse.ArgumentParser(exit_on_error=False)
58485853
parser.add_argument('foo')
5849-
parser.add_argument('bar', nargs=argparse.REMAINDER)
5854+
parser.add_argument('bar', nargs='...')
58505855

58515856
args = parser.parse_args(['--', 'a', 'b', 'c'])
58525857
self.assertEqual(NS(foo='a', bar=['b', 'c']), args)
@@ -5857,6 +5862,40 @@ def test_double_dash(self):
58575862
args = parser.parse_args(['a', '--', 'b', '--', 'c'])
58585863
self.assertEqual(NS(foo='a', bar=['b', '--', 'c']), args)
58595864

5865+
parser = argparse.ArgumentParser(exit_on_error=False)
5866+
parser.add_argument('--foo')
5867+
parser.add_argument('bar', nargs='...')
5868+
args = parser.parse_args(['--foo', 'a', '--', 'b', '--', 'c'])
5869+
self.assertEqual(NS(foo='a', bar=['--', 'b', '--', 'c']), args)
5870+
5871+
def test_subparser(self):
5872+
parser = argparse.ArgumentParser(exit_on_error=False)
5873+
parser.add_argument('foo')
5874+
subparsers = parser.add_subparsers()
5875+
parser1 = subparsers.add_parser('run')
5876+
parser1.add_argument('-f')
5877+
parser1.add_argument('bar', nargs='*')
5878+
5879+
args = parser.parse_args(['x', 'run', 'a', 'b', '-f', 'c'])
5880+
self.assertEqual(NS(foo='x', f='c', bar=['a', 'b']), args)
5881+
args = parser.parse_args(['x', 'run', 'a', 'b', '--', '-f', 'c'])
5882+
self.assertEqual(NS(foo='x', f=None, bar=['a', 'b', '-f', 'c']), args)
5883+
args = parser.parse_args(['x', 'run', 'a', '--', 'b', '-f', 'c'])
5884+
self.assertEqual(NS(foo='x', f=None, bar=['a', 'b', '-f', 'c']), args)
5885+
args = parser.parse_args(['x', 'run', '--', 'a', 'b', '-f', 'c'])
5886+
self.assertEqual(NS(foo='x', f=None, bar=['a', 'b', '-f', 'c']), args)
5887+
args = parser.parse_args(['x', '--', 'run', 'a', 'b', '-f', 'c'])
5888+
self.assertEqual(NS(foo='x', f='c', bar=['a', 'b']), args)
5889+
args = parser.parse_args(['--', 'x', 'run', 'a', 'b', '-f', 'c'])
5890+
self.assertEqual(NS(foo='x', f='c', bar=['a', 'b']), args)
5891+
args = parser.parse_args(['x', 'run', '--', 'a', '--', 'b'])
5892+
self.assertEqual(NS(foo='x', f=None, bar=['a', '--', 'b']), args)
5893+
args = parser.parse_args(['x', '--', 'run', '--', 'a', '--', 'b'])
5894+
self.assertEqual(NS(foo='x', f=None, bar=['a', '--', 'b']), args)
5895+
self.assertRaisesRegex(argparse.ArgumentError,
5896+
"invalid choice: '--'",
5897+
parser.parse_args, ['--', 'x', '--', 'run', 'a', 'b'])
5898+
58605899

58615900
# ===========================
58625901
# parse_intermixed_args tests

0 commit comments

Comments
 (0)
0