@@ -5761,7 +5761,30 @@ def test_zero_or_more_optional(self):
57615761 self .assertEqual (NS (x = []), args )
57625762
57635763 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 )
57655788 parser .add_argument ('-f' , '--foo' , nargs = '*' )
57665789 parser .add_argument ('bar' , nargs = '*' )
57675790
@@ -5775,6 +5798,41 @@ def test_double_dash(self):
57755798 self .assertEqual (NS (foo = [], bar = []), args )
57765799 args = parser .parse_args (['--foo' , 'a' , 'b' , '--' , 'c' , 'd' ])
57775800 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 )
57785836
57795837
57805838# ===========================
0 commit comments