@@ -5384,7 +5384,30 @@ def test_zero_or_more_optional(self):
5384
5384
self .assertEqual (NS (x = []), args )
5385
5385
5386
5386
def test_double_dash (self ):
5387
- parser = argparse .ArgumentParser ()
5387
+ parser = argparse .ArgumentParser (exit_on_error = False )
5388
+ parser .add_argument ('-f' , '--foo' )
5389
+ parser .add_argument ('bar' , nargs = '*' )
5390
+
5391
+ args = parser .parse_args (['--foo=--' ])
5392
+ self .assertEqual (NS (foo = '--' , bar = []), args )
5393
+ self .assertRaisesRegex (argparse .ArgumentError ,
5394
+ 'argument -f/--foo: expected one argument' ,
5395
+ parser .parse_args , ['--foo' , '--' ])
5396
+ args = parser .parse_args (['-f--' ])
5397
+ self .assertEqual (NS (foo = '--' , bar = []), args )
5398
+ self .assertRaisesRegex (argparse .ArgumentError ,
5399
+ 'argument -f/--foo: expected one argument' ,
5400
+ parser .parse_args , ['-f' , '--' ])
5401
+ args = parser .parse_args (['--foo' , 'a' , '--' , 'b' , 'c' ])
5402
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5403
+ args = parser .parse_args (['a' , 'b' , '--foo' , 'c' ])
5404
+ self .assertEqual (NS (foo = 'c' , bar = ['a' , 'b' ]), args )
5405
+ args = parser .parse_args (['a' , '--' , 'b' , '--foo' , 'c' ])
5406
+ self .assertEqual (NS (foo = None , bar = ['a' , 'b' , '--foo' , 'c' ]), args )
5407
+ args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' , '--foo' , 'd' ])
5408
+ self .assertEqual (NS (foo = None , bar = ['a' , 'b' , '--' , 'c' , '--foo' , 'd' ]), args )
5409
+
5410
+ parser = argparse .ArgumentParser (exit_on_error = False )
5388
5411
parser .add_argument ('-f' , '--foo' , nargs = '*' )
5389
5412
parser .add_argument ('bar' , nargs = '*' )
5390
5413
@@ -5398,6 +5421,41 @@ def test_double_dash(self):
5398
5421
self .assertEqual (NS (foo = [], bar = []), args )
5399
5422
args = parser .parse_args (['--foo' , 'a' , 'b' , '--' , 'c' , 'd' ])
5400
5423
self .assertEqual (NS (foo = ['a' , 'b' ], bar = ['c' , 'd' ]), args )
5424
+ args = parser .parse_args (['a' , 'b' , '--foo' , 'c' , 'd' ])
5425
+ self .assertEqual (NS (foo = ['c' , 'd' ], bar = ['a' , 'b' ]), args )
5426
+ args = parser .parse_args (['a' , '--' , 'b' , '--foo' , 'c' , 'd' ])
5427
+ self .assertEqual (NS (foo = None , bar = ['a' , 'b' , '--foo' , 'c' , 'd' ]), args )
5428
+ args , argv = parser .parse_known_args (['a' , 'b' , '--foo' , 'c' , '--' , 'd' ])
5429
+ self .assertEqual (NS (foo = ['c' ], bar = ['a' , 'b' ]), args )
5430
+ self .assertEqual (argv , ['--' , 'd' ])
5431
+
5432
+ parser = argparse .ArgumentParser (exit_on_error = False )
5433
+ parser .add_argument ('foo' )
5434
+ parser .add_argument ('bar' , nargs = '*' )
5435
+
5436
+ args = parser .parse_args (['--' , 'a' , 'b' , 'c' ])
5437
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5438
+ args = parser .parse_args (['a' , '--' , 'b' , 'c' ])
5439
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5440
+ args = parser .parse_args (['a' , 'b' , '--' , 'c' ])
5441
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5442
+ args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' ])
5443
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , '--' , 'c' ]), args )
5444
+ args = parser .parse_args (['--' , '--' , 'a' , '--' , 'b' , 'c' ])
5445
+ self .assertEqual (NS (foo = '--' , bar = ['a' , '--' , 'b' , 'c' ]), args )
5446
+
5447
+ parser = argparse .ArgumentParser (exit_on_error = False )
5448
+ parser .add_argument ('foo' )
5449
+ parser .add_argument ('bar' , nargs = argparse .REMAINDER )
5450
+
5451
+ args = parser .parse_args (['--' , 'a' , 'b' , 'c' ])
5452
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5453
+ args = parser .parse_args (['a' , '--' , 'b' , 'c' ])
5454
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
5455
+ args = parser .parse_args (['a' , 'b' , '--' , 'c' ])
5456
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , '--' , 'c' ]), args )
5457
+ args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' ])
5458
+ self .assertEqual (NS (foo = 'a' , bar = ['b' , '--' , 'c' ]), args )
5401
5459
5402
5460
5403
5461
# ===========================
0 commit comments