@@ -5720,7 +5720,9 @@ def test_zero_or_more_optional(self):
5720
5720
args = parser .parse_args ([])
5721
5721
self .assertEqual (NS (x = []), args )
5722
5722
5723
- def test_double_dash (self ):
5723
+
5724
+ class TestDoubleDash (TestCase ):
5725
+ def test_single_argument_option (self ):
5724
5726
parser = argparse .ArgumentParser (exit_on_error = False )
5725
5727
parser .add_argument ('-f' , '--foo' )
5726
5728
parser .add_argument ('bar' , nargs = '*' )
@@ -5744,6 +5746,7 @@ def test_double_dash(self):
5744
5746
args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' , '--foo' , 'd' ])
5745
5747
self .assertEqual (NS (foo = None , bar = ['a' , 'b' , '--' , 'c' , '--foo' , 'd' ]), args )
5746
5748
5749
+ def test_multiple_argument_option (self ):
5747
5750
parser = argparse .ArgumentParser (exit_on_error = False )
5748
5751
parser .add_argument ('-f' , '--foo' , nargs = '*' )
5749
5752
parser .add_argument ('bar' , nargs = '*' )
@@ -5766,6 +5769,7 @@ def test_double_dash(self):
5766
5769
self .assertEqual (NS (foo = ['c' ], bar = ['a' , 'b' ]), args )
5767
5770
self .assertEqual (argv , ['--' , 'd' ])
5768
5771
5772
+ def test_multiple_double_dashes (self ):
5769
5773
parser = argparse .ArgumentParser (exit_on_error = False )
5770
5774
parser .add_argument ('foo' )
5771
5775
parser .add_argument ('bar' , nargs = '*' )
@@ -5781,9 +5785,10 @@ def test_double_dash(self):
5781
5785
args = parser .parse_args (['--' , '--' , 'a' , '--' , 'b' , 'c' ])
5782
5786
self .assertEqual (NS (foo = '--' , bar = ['a' , '--' , 'b' , 'c' ]), args )
5783
5787
5788
+ def test_remainder (self ):
5784
5789
parser = argparse .ArgumentParser (exit_on_error = False )
5785
5790
parser .add_argument ('foo' )
5786
- parser .add_argument ('bar' , nargs = argparse . REMAINDER )
5791
+ parser .add_argument ('bar' , nargs = '...' )
5787
5792
5788
5793
args = parser .parse_args (['--' , 'a' , 'b' , 'c' ])
5789
5794
self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
@@ -5794,6 +5799,40 @@ def test_double_dash(self):
5794
5799
args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' ])
5795
5800
self .assertEqual (NS (foo = 'a' , bar = ['b' , '--' , 'c' ]), args )
5796
5801
5802
+ parser = argparse .ArgumentParser (exit_on_error = False )
5803
+ parser .add_argument ('--foo' )
5804
+ parser .add_argument ('bar' , nargs = '...' )
5805
+ args = parser .parse_args (['--foo' , 'a' , '--' , 'b' , '--' , 'c' ])
5806
+ self .assertEqual (NS (foo = 'a' , bar = ['--' , 'b' , '--' , 'c' ]), args )
5807
+
5808
+ def test_subparser (self ):
5809
+ parser = argparse .ArgumentParser (exit_on_error = False )
5810
+ parser .add_argument ('foo' )
5811
+ subparsers = parser .add_subparsers ()
5812
+ parser1 = subparsers .add_parser ('run' )
5813
+ parser1 .add_argument ('-f' )
5814
+ parser1 .add_argument ('bar' , nargs = '*' )
5815
+
5816
+ args = parser .parse_args (['x' , 'run' , 'a' , 'b' , '-f' , 'c' ])
5817
+ self .assertEqual (NS (foo = 'x' , f = 'c' , bar = ['a' , 'b' ]), args )
5818
+ args = parser .parse_args (['x' , 'run' , 'a' , 'b' , '--' , '-f' , 'c' ])
5819
+ self .assertEqual (NS (foo = 'x' , f = None , bar = ['a' , 'b' , '-f' , 'c' ]), args )
5820
+ args = parser .parse_args (['x' , 'run' , 'a' , '--' , 'b' , '-f' , 'c' ])
5821
+ self .assertEqual (NS (foo = 'x' , f = None , bar = ['a' , 'b' , '-f' , 'c' ]), args )
5822
+ args = parser .parse_args (['x' , 'run' , '--' , 'a' , 'b' , '-f' , 'c' ])
5823
+ self .assertEqual (NS (foo = 'x' , f = None , bar = ['a' , 'b' , '-f' , 'c' ]), args )
5824
+ args = parser .parse_args (['x' , '--' , 'run' , 'a' , 'b' , '-f' , 'c' ])
5825
+ self .assertEqual (NS (foo = 'x' , f = 'c' , bar = ['a' , 'b' ]), args )
5826
+ args = parser .parse_args (['--' , 'x' , 'run' , 'a' , 'b' , '-f' , 'c' ])
5827
+ self .assertEqual (NS (foo = 'x' , f = 'c' , bar = ['a' , 'b' ]), args )
5828
+ args = parser .parse_args (['x' , 'run' , '--' , 'a' , '--' , 'b' ])
5829
+ self .assertEqual (NS (foo = 'x' , f = None , bar = ['a' , '--' , 'b' ]), args )
5830
+ args = parser .parse_args (['x' , '--' , 'run' , '--' , 'a' , '--' , 'b' ])
5831
+ self .assertEqual (NS (foo = 'x' , f = None , bar = ['a' , '--' , 'b' ]), args )
5832
+ self .assertRaisesRegex (argparse .ArgumentError ,
5833
+ "invalid choice: '--'" ,
5834
+ parser .parse_args , ['--' , 'x' , '--' , 'run' , 'a' , 'b' ])
5835
+
5797
5836
5798
5837
# ===========================
5799
5838
# parse_intermixed_args tests
0 commit comments