@@ -5761,7 +5761,30 @@ def test_zero_or_more_optional(self):
5761
5761
self .assertEqual (NS (x = []), args )
5762
5762
5763
5763
def test_double_dash (self ):
5764
- parser = argparse .ArgumentParser ()
5764
+ parser = argparse .ArgumentParser (exit_on_error = False )
5765
+ parser .add_argument ('-f' , '--foo' )
5766
+ parser .add_argument ('bar' , nargs = '*' )
5767
+
5768
+ args = parser .parse_args (['--foo=--' ])
5769
+ self .assertEqual (NS (foo = '--' , bar = []), args )
5770
+ self .assertRaisesRegex (argparse .ArgumentError ,
5771
+ 'argument -f/--foo: expected one argument' ,
5772
+ parser .parse_args , ['--foo' , '--' ])
5773
+ args = parser .parse_args (['-f--' ])
5774
+ self .assertEqual (NS (foo = '--' , bar = []), args )
5775
+ self .assertRaisesRegex (argparse .ArgumentError ,
5776
+ 'argument -f/--foo: expected one argument' ,
5777
+ parser .parse_args , ['-f' , '--' ])
5778
+ args = parser .parse_args (['--foo' , 'a' , '--' , 'b' , 'c' ])
5779
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5780
+ args = parser .parse_args (['a' , 'b' , '--foo' , 'c' ])
5781
+ self .assertEqual (NS (foo = 'c' , bar = ['a' , 'b' ]), args )
5782
+ args = parser .parse_args (['a' , '--' , 'b' , '--foo' , 'c' ])
5783
+ self .assertEqual (NS (foo = None , bar = ['a' , 'b' , '--foo' , 'c' ]), args )
5784
+ args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' , '--foo' , 'd' ])
5785
+ self .assertEqual (NS (foo = None , bar = ['a' , 'b' , '--' , 'c' , '--foo' , 'd' ]), args )
5786
+
5787
+ parser = argparse .ArgumentParser (exit_on_error = False )
5765
5788
parser .add_argument ('-f' , '--foo' , nargs = '*' )
5766
5789
parser .add_argument ('bar' , nargs = '*' )
5767
5790
@@ -5775,6 +5798,41 @@ def test_double_dash(self):
5775
5798
self .assertEqual (NS (foo = [], bar = []), args )
5776
5799
args = parser .parse_args (['--foo' , 'a' , 'b' , '--' , 'c' , 'd' ])
5777
5800
self .assertEqual (NS (foo = ['a' , 'b' ], bar = ['c' , 'd' ]), args )
5801
+ args = parser .parse_args (['a' , 'b' , '--foo' , 'c' , 'd' ])
5802
+ self .assertEqual (NS (foo = ['c' , 'd' ], bar = ['a' , 'b' ]), args )
5803
+ args = parser .parse_args (['a' , '--' , 'b' , '--foo' , 'c' , 'd' ])
5804
+ self .assertEqual (NS (foo = None , bar = ['a' , 'b' , '--foo' , 'c' , 'd' ]), args )
5805
+ args , argv = parser .parse_known_args (['a' , 'b' , '--foo' , 'c' , '--' , 'd' ])
5806
+ self .assertEqual (NS (foo = ['c' ], bar = ['a' , 'b' ]), args )
5807
+ self .assertEqual (argv , ['--' , 'd' ])
5808
+
5809
+ parser = argparse .ArgumentParser (exit_on_error = False )
5810
+ parser .add_argument ('foo' )
5811
+ parser .add_argument ('bar' , nargs = '*' )
5812
+
5813
+ args = parser .parse_args (['--' , 'a' , 'b' , 'c' ])
5814
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5815
+ args = parser .parse_args (['a' , '--' , 'b' , 'c' ])
5816
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5817
+ args = parser .parse_args (['a' , 'b' , '--' , 'c' ])
5818
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5819
+ args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' ])
5820
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , '--' , 'c' ]), args )
5821
+ args = parser .parse_args (['--' , '--' , 'a' , '--' , 'b' , 'c' ])
5822
+ self .assertEqual (NS (foo = '--' , bar = ['a' , '--' , 'b' , 'c' ]), args )
5823
+
5824
+ parser = argparse .ArgumentParser (exit_on_error = False )
5825
+ parser .add_argument ('foo' )
5826
+ parser .add_argument ('bar' , nargs = argparse .REMAINDER )
5827
+
5828
+ args = parser .parse_args (['--' , 'a' , 'b' , 'c' ])
5829
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5830
+ args = parser .parse_args (['a' , '--' , 'b' , 'c' ])
5831
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5832
+ args = parser .parse_args (['a' , 'b' , '--' , 'c' ])
5833
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , '--' , 'c' ]), args )
5834
+ args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' ])
5835
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , '--' , 'c' ]), args )
5778
5836
5779
5837
5780
5838
# ===========================
0 commit comments