@@ -5760,7 +5760,9 @@ def test_zero_or_more_optional(self):
5760
5760
args = parser .parse_args ([])
5761
5761
self .assertEqual (NS (x = []), args )
5762
5762
5763
- def test_double_dash (self ):
5763
+
5764
+ class TestDoubleDash (TestCase ):
5765
+ def test_single_argument_option (self ):
5764
5766
parser = argparse .ArgumentParser (exit_on_error = False )
5765
5767
parser .add_argument ('-f' , '--foo' )
5766
5768
parser .add_argument ('bar' , nargs = '*' )
@@ -5784,6 +5786,7 @@ def test_double_dash(self):
5784
5786
args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' , '--foo' , 'd' ])
5785
5787
self .assertEqual (NS (foo = None , bar = ['a' , 'b' , '--' , 'c' , '--foo' , 'd' ]), args )
5786
5788
5789
+ def test_multiple_argument_option (self ):
5787
5790
parser = argparse .ArgumentParser (exit_on_error = False )
5788
5791
parser .add_argument ('-f' , '--foo' , nargs = '*' )
5789
5792
parser .add_argument ('bar' , nargs = '*' )
@@ -5806,6 +5809,7 @@ def test_double_dash(self):
5806
5809
self .assertEqual (NS (foo = ['c' ], bar = ['a' , 'b' ]), args )
5807
5810
self .assertEqual (argv , ['--' , 'd' ])
5808
5811
5812
+ def test_multiple_double_dashes (self ):
5809
5813
parser = argparse .ArgumentParser (exit_on_error = False )
5810
5814
parser .add_argument ('foo' )
5811
5815
parser .add_argument ('bar' , nargs = '*' )
@@ -5821,9 +5825,10 @@ def test_double_dash(self):
5821
5825
args = parser .parse_args (['--' , '--' , 'a' , '--' , 'b' , 'c' ])
5822
5826
self .assertEqual (NS (foo = '--' , bar = ['a' , '--' , 'b' , 'c' ]), args )
5823
5827
5828
+ def test_remainder (self ):
5824
5829
parser = argparse .ArgumentParser (exit_on_error = False )
5825
5830
parser .add_argument ('foo' )
5826
- parser .add_argument ('bar' , nargs = argparse . REMAINDER )
5831
+ parser .add_argument ('bar' , nargs = '...' )
5827
5832
5828
5833
args = parser .parse_args (['--' , 'a' , 'b' , 'c' ])
5829
5834
self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
@@ -5834,6 +5839,40 @@ def test_double_dash(self):
5834
5839
args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' ])
5835
5840
self .assertEqual (NS (foo = 'a' , bar = ['b' , '--' , 'c' ]), args )
5836
5841
5842
+ parser = argparse .ArgumentParser (exit_on_error = False )
5843
+ parser .add_argument ('--foo' )
5844
+ parser .add_argument ('bar' , nargs = '...' )
5845
+ args = parser .parse_args (['--foo' , 'a' , '--' , 'b' , '--' , 'c' ])
5846
+ self .assertEqual (NS (foo = 'a' , bar = ['--' , 'b' , '--' , 'c' ]), args )
5847
+
5848
+ def test_subparser (self ):
5849
+ parser = argparse .ArgumentParser (exit_on_error = False )
5850
+ parser .add_argument ('foo' )
5851
+ subparsers = parser .add_subparsers ()
5852
+ parser1 = subparsers .add_parser ('run' )
5853
+ parser1 .add_argument ('-f' )
5854
+ parser1 .add_argument ('bar' , nargs = '*' )
5855
+
5856
+ args = parser .parse_args (['x' , 'run' , 'a' , 'b' , '-f' , 'c' ])
5857
+ self .assertEqual (NS (foo = 'x' , f = 'c' , bar = ['a' , 'b' ]), args )
5858
+ args = parser .parse_args (['x' , 'run' , 'a' , 'b' , '--' , '-f' , 'c' ])
5859
+ self .assertEqual (NS (foo = 'x' , f = None , bar = ['a' , 'b' , '-f' , 'c' ]), args )
5860
+ args = parser .parse_args (['x' , 'run' , 'a' , '--' , 'b' , '-f' , 'c' ])
5861
+ self .assertEqual (NS (foo = 'x' , f = None , bar = ['a' , 'b' , '-f' , 'c' ]), args )
5862
+ args = parser .parse_args (['x' , 'run' , '--' , 'a' , 'b' , '-f' , 'c' ])
5863
+ self .assertEqual (NS (foo = 'x' , f = None , bar = ['a' , 'b' , '-f' , 'c' ]), args )
5864
+ args = parser .parse_args (['x' , '--' , 'run' , 'a' , 'b' , '-f' , 'c' ])
5865
+ self .assertEqual (NS (foo = 'x' , f = 'c' , bar = ['a' , 'b' ]), args )
5866
+ args = parser .parse_args (['--' , 'x' , 'run' , 'a' , 'b' , '-f' , 'c' ])
5867
+ self .assertEqual (NS (foo = 'x' , f = 'c' , bar = ['a' , 'b' ]), args )
5868
+ args = parser .parse_args (['x' , 'run' , '--' , 'a' , '--' , 'b' ])
5869
+ self .assertEqual (NS (foo = 'x' , f = None , bar = ['a' , '--' , 'b' ]), args )
5870
+ args = parser .parse_args (['x' , '--' , 'run' , '--' , 'a' , '--' , 'b' ])
5871
+ self .assertEqual (NS (foo = 'x' , f = None , bar = ['a' , '--' , 'b' ]), args )
5872
+ self .assertRaisesRegex (argparse .ArgumentError ,
5873
+ "invalid choice: '--'" ,
5874
+ parser .parse_args , ['--' , 'x' , '--' , 'run' , 'a' , 'b' ])
5875
+
5837
5876
5838
5877
# ===========================
5839
5878
# parse_intermixed_args tests
0 commit comments