@@ -5783,7 +5783,9 @@ def test_zero_or_more_optional(self):
5783
5783
args = parser .parse_args ([])
5784
5784
self .assertEqual (NS (x = []), args )
5785
5785
5786
- def test_double_dash (self ):
5786
+
5787
+ class TestDoubleDash (TestCase ):
5788
+ def test_single_argument_option (self ):
5787
5789
parser = argparse .ArgumentParser (exit_on_error = False )
5788
5790
parser .add_argument ('-f' , '--foo' )
5789
5791
parser .add_argument ('bar' , nargs = '*' )
@@ -5807,6 +5809,7 @@ def test_double_dash(self):
5807
5809
args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' , '--foo' , 'd' ])
5808
5810
self .assertEqual (NS (foo = None , bar = ['a' , 'b' , '--' , 'c' , '--foo' , 'd' ]), args )
5809
5811
5812
+ def test_multiple_argument_option (self ):
5810
5813
parser = argparse .ArgumentParser (exit_on_error = False )
5811
5814
parser .add_argument ('-f' , '--foo' , nargs = '*' )
5812
5815
parser .add_argument ('bar' , nargs = '*' )
@@ -5829,6 +5832,7 @@ def test_double_dash(self):
5829
5832
self .assertEqual (NS (foo = ['c' ], bar = ['a' , 'b' ]), args )
5830
5833
self .assertEqual (argv , ['--' , 'd' ])
5831
5834
5835
+ def test_multiple_double_dashes (self ):
5832
5836
parser = argparse .ArgumentParser (exit_on_error = False )
5833
5837
parser .add_argument ('foo' )
5834
5838
parser .add_argument ('bar' , nargs = '*' )
@@ -5844,9 +5848,10 @@ def test_double_dash(self):
5844
5848
args = parser .parse_args (['--' , '--' , 'a' , '--' , 'b' , 'c' ])
5845
5849
self .assertEqual (NS (foo = '--' , bar = ['a' , '--' , 'b' , 'c' ]), args )
5846
5850
5851
+ def test_remainder (self ):
5847
5852
parser = argparse .ArgumentParser (exit_on_error = False )
5848
5853
parser .add_argument ('foo' )
5849
- parser .add_argument ('bar' , nargs = argparse . REMAINDER )
5854
+ parser .add_argument ('bar' , nargs = '...' )
5850
5855
5851
5856
args = parser .parse_args (['--' , 'a' , 'b' , 'c' ])
5852
5857
self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
@@ -5857,6 +5862,40 @@ def test_double_dash(self):
5857
5862
args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' ])
5858
5863
self .assertEqual (NS (foo = 'a' , bar = ['b' , '--' , 'c' ]), args )
5859
5864
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
+
5860
5899
5861
5900
# ===========================
5862
5901
# parse_intermixed_args tests
0 commit comments