@@ -5721,7 +5721,30 @@ def test_zero_or_more_optional(self):
5721
5721
self .assertEqual (NS (x = []), args )
5722
5722
5723
5723
def test_double_dash (self ):
5724
- parser = argparse .ArgumentParser ()
5724
+ parser = argparse .ArgumentParser (exit_on_error = False )
5725
+ parser .add_argument ('-f' , '--foo' )
5726
+ parser .add_argument ('bar' , nargs = '*' )
5727
+
5728
+ args = parser .parse_args (['--foo=--' ])
5729
+ self .assertEqual (NS (foo = '--' , bar = []), args )
5730
+ self .assertRaisesRegex (argparse .ArgumentError ,
5731
+ 'argument -f/--foo: expected one argument' ,
5732
+ parser .parse_args , ['--foo' , '--' ])
5733
+ args = parser .parse_args (['-f--' ])
5734
+ self .assertEqual (NS (foo = '--' , bar = []), args )
5735
+ self .assertRaisesRegex (argparse .ArgumentError ,
5736
+ 'argument -f/--foo: expected one argument' ,
5737
+ parser .parse_args , ['-f' , '--' ])
5738
+ args = parser .parse_args (['--foo' , 'a' , '--' , 'b' , 'c' ])
5739
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5740
+ args = parser .parse_args (['a' , 'b' , '--foo' , 'c' ])
5741
+ self .assertEqual (NS (foo = 'c' , bar = ['a' , 'b' ]), args )
5742
+ args = parser .parse_args (['a' , '--' , 'b' , '--foo' , 'c' ])
5743
+ self .assertEqual (NS (foo = None , bar = ['a' , 'b' , '--foo' , 'c' ]), args )
5744
+ args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' , '--foo' , 'd' ])
5745
+ self .assertEqual (NS (foo = None , bar = ['a' , 'b' , '--' , 'c' , '--foo' , 'd' ]), args )
5746
+
5747
+ parser = argparse .ArgumentParser (exit_on_error = False )
5725
5748
parser .add_argument ('-f' , '--foo' , nargs = '*' )
5726
5749
parser .add_argument ('bar' , nargs = '*' )
5727
5750
@@ -5735,6 +5758,41 @@ def test_double_dash(self):
5735
5758
self .assertEqual (NS (foo = [], bar = []), args )
5736
5759
args = parser .parse_args (['--foo' , 'a' , 'b' , '--' , 'c' , 'd' ])
5737
5760
self .assertEqual (NS (foo = ['a' , 'b' ], bar = ['c' , 'd' ]), args )
5761
+ args = parser .parse_args (['a' , 'b' , '--foo' , 'c' , 'd' ])
5762
+ self .assertEqual (NS (foo = ['c' , 'd' ], bar = ['a' , 'b' ]), args )
5763
+ args = parser .parse_args (['a' , '--' , 'b' , '--foo' , 'c' , 'd' ])
5764
+ self .assertEqual (NS (foo = None , bar = ['a' , 'b' , '--foo' , 'c' , 'd' ]), args )
5765
+ args , argv = parser .parse_known_args (['a' , 'b' , '--foo' , 'c' , '--' , 'd' ])
5766
+ self .assertEqual (NS (foo = ['c' ], bar = ['a' , 'b' ]), args )
5767
+ self .assertEqual (argv , ['--' , 'd' ])
5768
+
5769
+ parser = argparse .ArgumentParser (exit_on_error = False )
5770
+ parser .add_argument ('foo' )
5771
+ parser .add_argument ('bar' , nargs = '*' )
5772
+
5773
+ args = parser .parse_args (['--' , 'a' , 'b' , 'c' ])
5774
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5775
+ args = parser .parse_args (['a' , '--' , 'b' , 'c' ])
5776
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5777
+ args = parser .parse_args (['a' , 'b' , '--' , 'c' ])
5778
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5779
+ args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' ])
5780
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , '--' , 'c' ]), args )
5781
+ args = parser .parse_args (['--' , '--' , 'a' , '--' , 'b' , 'c' ])
5782
+ self .assertEqual (NS (foo = '--' , bar = ['a' , '--' , 'b' , 'c' ]), args )
5783
+
5784
+ parser = argparse .ArgumentParser (exit_on_error = False )
5785
+ parser .add_argument ('foo' )
5786
+ parser .add_argument ('bar' , nargs = argparse .REMAINDER )
5787
+
5788
+ args = parser .parse_args (['--' , 'a' , 'b' , 'c' ])
5789
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5790
+ args = parser .parse_args (['a' , '--' , 'b' , 'c' ])
5791
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5792
+ args = parser .parse_args (['a' , 'b' , '--' , 'c' ])
5793
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , '--' , 'c' ]), args )
5794
+ args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' ])
5795
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , '--' , 'c' ]), args )
5738
5796
5739
5797
5740
5798
# ===========================
0 commit comments