@@ -5784,7 +5784,30 @@ def test_zero_or_more_optional(self):
57845784 self .assertEqual (NS (x = []), args )
57855785
57865786 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 )
57885811 parser .add_argument ('-f' , '--foo' , nargs = '*' )
57895812 parser .add_argument ('bar' , nargs = '*' )
57905813
@@ -5798,6 +5821,41 @@ def test_double_dash(self):
57985821 self .assertEqual (NS (foo = [], bar = []), args )
57995822 args = parser .parse_args (['--foo' , 'a' , 'b' , '--' , 'c' , 'd' ])
58005823 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 )
58015859
58025860
58035861# ===========================
0 commit comments