@@ -5784,7 +5784,30 @@ def test_zero_or_more_optional(self):
5784
5784
self .assertEqual (NS (x = []), args )
5785
5785
5786
5786
def test_double_dash (self ):
5787
- parser = argparse .ArgumentParser ()
5787
+ parser = argparse .ArgumentParser (exit_on_error = False )
5788
+ parser .add_argument ('-f' , '--foo' )
5789
+ parser .add_argument ('bar' , nargs = '*' )
5790
+
5791
+ args = parser .parse_args (['--foo=--' ])
5792
+ self .assertEqual (NS (foo = '--' , bar = []), args )
5793
+ self .assertRaisesRegex (argparse .ArgumentError ,
5794
+ 'argument -f/--foo: expected one argument' ,
5795
+ parser .parse_args , ['--foo' , '--' ])
5796
+ args = parser .parse_args (['-f--' ])
5797
+ self .assertEqual (NS (foo = '--' , bar = []), args )
5798
+ self .assertRaisesRegex (argparse .ArgumentError ,
5799
+ 'argument -f/--foo: expected one argument' ,
5800
+ parser .parse_args , ['-f' , '--' ])
5801
+ args = parser .parse_args (['--foo' , 'a' , '--' , 'b' , 'c' ])
5802
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5803
+ args = parser .parse_args (['a' , 'b' , '--foo' , 'c' ])
5804
+ self .assertEqual (NS (foo = 'c' , bar = ['a' , 'b' ]), args )
5805
+ args = parser .parse_args (['a' , '--' , 'b' , '--foo' , 'c' ])
5806
+ self .assertEqual (NS (foo = None , bar = ['a' , 'b' , '--foo' , 'c' ]), args )
5807
+ args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' , '--foo' , 'd' ])
5808
+ self .assertEqual (NS (foo = None , bar = ['a' , 'b' , '--' , 'c' , '--foo' , 'd' ]), args )
5809
+
5810
+ parser = argparse .ArgumentParser (exit_on_error = False )
5788
5811
parser .add_argument ('-f' , '--foo' , nargs = '*' )
5789
5812
parser .add_argument ('bar' , nargs = '*' )
5790
5813
@@ -5798,6 +5821,41 @@ def test_double_dash(self):
5798
5821
self .assertEqual (NS (foo = [], bar = []), args )
5799
5822
args = parser .parse_args (['--foo' , 'a' , 'b' , '--' , 'c' , 'd' ])
5800
5823
self .assertEqual (NS (foo = ['a' , 'b' ], bar = ['c' , 'd' ]), args )
5824
+ args = parser .parse_args (['a' , 'b' , '--foo' , 'c' , 'd' ])
5825
+ self .assertEqual (NS (foo = ['c' , 'd' ], bar = ['a' , 'b' ]), args )
5826
+ args = parser .parse_args (['a' , '--' , 'b' , '--foo' , 'c' , 'd' ])
5827
+ self .assertEqual (NS (foo = None , bar = ['a' , 'b' , '--foo' , 'c' , 'd' ]), args )
5828
+ args , argv = parser .parse_known_args (['a' , 'b' , '--foo' , 'c' , '--' , 'd' ])
5829
+ self .assertEqual (NS (foo = ['c' ], bar = ['a' , 'b' ]), args )
5830
+ self .assertEqual (argv , ['--' , 'd' ])
5831
+
5832
+ parser = argparse .ArgumentParser (exit_on_error = False )
5833
+ parser .add_argument ('foo' )
5834
+ parser .add_argument ('bar' , nargs = '*' )
5835
+
5836
+ args = parser .parse_args (['--' , 'a' , 'b' , 'c' ])
5837
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5838
+ args = parser .parse_args (['a' , '--' , 'b' , 'c' ])
5839
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5840
+ args = parser .parse_args (['a' , 'b' , '--' , 'c' ])
5841
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5842
+ args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' ])
5843
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , '--' , 'c' ]), args )
5844
+ args = parser .parse_args (['--' , '--' , 'a' , '--' , 'b' , 'c' ])
5845
+ self .assertEqual (NS (foo = '--' , bar = ['a' , '--' , 'b' , 'c' ]), args )
5846
+
5847
+ parser = argparse .ArgumentParser (exit_on_error = False )
5848
+ parser .add_argument ('foo' )
5849
+ parser .add_argument ('bar' , nargs = argparse .REMAINDER )
5850
+
5851
+ args = parser .parse_args (['--' , 'a' , 'b' , 'c' ])
5852
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5853
+ args = parser .parse_args (['a' , '--' , 'b' , 'c' ])
5854
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5855
+ args = parser .parse_args (['a' , 'b' , '--' , 'c' ])
5856
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , '--' , 'c' ]), args )
5857
+ args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' ])
5858
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , '--' , 'c' ]), args )
5801
5859
5802
5860
5803
5861
# ===========================
0 commit comments