@@ -5721,7 +5721,30 @@ def test_zero_or_more_optional(self):
57215721 self .assertEqual (NS (x = []), args )
57225722
57235723 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 )
57255748 parser .add_argument ('-f' , '--foo' , nargs = '*' )
57265749 parser .add_argument ('bar' , nargs = '*' )
57275750
@@ -5735,6 +5758,41 @@ def test_double_dash(self):
57355758 self .assertEqual (NS (foo = [], bar = []), args )
57365759 args = parser .parse_args (['--foo' , 'a' , 'b' , '--' , 'c' , 'd' ])
57375760 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 )
57385796
57395797
57405798# ===========================
0 commit comments