@@ -5993,7 +5993,9 @@ def test_zero_or_more_optional(self):
5993
5993
args = parser .parse_args ([])
5994
5994
self .assertEqual (NS (x = []), args )
5995
5995
5996
- def test_double_dash (self ):
5996
+
5997
+ class TestDoubleDash (TestCase ):
5998
+ def test_single_argument_option (self ):
5997
5999
parser = argparse .ArgumentParser (exit_on_error = False )
5998
6000
parser .add_argument ('-f' , '--foo' )
5999
6001
parser .add_argument ('bar' , nargs = '*' )
@@ -6017,6 +6019,7 @@ def test_double_dash(self):
6017
6019
args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' , '--foo' , 'd' ])
6018
6020
self .assertEqual (NS (foo = None , bar = ['a' , 'b' , '--' , 'c' , '--foo' , 'd' ]), args )
6019
6021
6022
+ def test_multiple_argument_option (self ):
6020
6023
parser = argparse .ArgumentParser (exit_on_error = False )
6021
6024
parser .add_argument ('-f' , '--foo' , nargs = '*' )
6022
6025
parser .add_argument ('bar' , nargs = '*' )
@@ -6039,6 +6042,7 @@ def test_double_dash(self):
6039
6042
self .assertEqual (NS (foo = ['c' ], bar = ['a' , 'b' ]), args )
6040
6043
self .assertEqual (argv , ['--' , 'd' ])
6041
6044
6045
+ def test_multiple_double_dashes (self ):
6042
6046
parser = argparse .ArgumentParser (exit_on_error = False )
6043
6047
parser .add_argument ('foo' )
6044
6048
parser .add_argument ('bar' , nargs = '*' )
@@ -6054,9 +6058,10 @@ def test_double_dash(self):
6054
6058
args = parser .parse_args (['--' , '--' , 'a' , '--' , 'b' , 'c' ])
6055
6059
self .assertEqual (NS (foo = '--' , bar = ['a' , '--' , 'b' , 'c' ]), args )
6056
6060
6061
+ def test_remainder (self ):
6057
6062
parser = argparse .ArgumentParser (exit_on_error = False )
6058
6063
parser .add_argument ('foo' )
6059
- parser .add_argument ('bar' , nargs = argparse . REMAINDER )
6064
+ parser .add_argument ('bar' , nargs = '...' )
6060
6065
6061
6066
args = parser .parse_args (['--' , 'a' , 'b' , 'c' ])
6062
6067
self .assertEqual (NS (foo = 'a' , bar = ['b' , 'c' ]), args )
@@ -6067,6 +6072,40 @@ def test_double_dash(self):
6067
6072
args = parser .parse_args (['a' , '--' , 'b' , '--' , 'c' ])
6068
6073
self .assertEqual (NS (foo = 'a' , bar = ['b' , '--' , 'c' ]), args )
6069
6074
6075
+ parser = argparse .ArgumentParser (exit_on_error = False )
6076
+ parser .add_argument ('--foo' )
6077
+ parser .add_argument ('bar' , nargs = '...' )
6078
+ args = parser .parse_args (['--foo' , 'a' , '--' , 'b' , '--' , 'c' ])
6079
+ self .assertEqual (NS (foo = 'a' , bar = ['--' , 'b' , '--' , 'c' ]), args )
6080
+
6081
+ def test_subparser (self ):
6082
+ parser = argparse .ArgumentParser (exit_on_error = False )
6083
+ parser .add_argument ('foo' )
6084
+ subparsers = parser .add_subparsers ()
6085
+ parser1 = subparsers .add_parser ('run' )
6086
+ parser1 .add_argument ('-f' )
6087
+ parser1 .add_argument ('bar' , nargs = '*' )
6088
+
6089
+ args = parser .parse_args (['x' , 'run' , 'a' , 'b' , '-f' , 'c' ])
6090
+ self .assertEqual (NS (foo = 'x' , f = 'c' , bar = ['a' , 'b' ]), args )
6091
+ args = parser .parse_args (['x' , 'run' , 'a' , 'b' , '--' , '-f' , 'c' ])
6092
+ self .assertEqual (NS (foo = 'x' , f = None , bar = ['a' , 'b' , '-f' , 'c' ]), args )
6093
+ args = parser .parse_args (['x' , 'run' , 'a' , '--' , 'b' , '-f' , 'c' ])
6094
+ self .assertEqual (NS (foo = 'x' , f = None , bar = ['a' , 'b' , '-f' , 'c' ]), args )
6095
+ args = parser .parse_args (['x' , 'run' , '--' , 'a' , 'b' , '-f' , 'c' ])
6096
+ self .assertEqual (NS (foo = 'x' , f = None , bar = ['a' , 'b' , '-f' , 'c' ]), args )
6097
+ args = parser .parse_args (['x' , '--' , 'run' , 'a' , 'b' , '-f' , 'c' ])
6098
+ self .assertEqual (NS (foo = 'x' , f = 'c' , bar = ['a' , 'b' ]), args )
6099
+ args = parser .parse_args (['--' , 'x' , 'run' , 'a' , 'b' , '-f' , 'c' ])
6100
+ self .assertEqual (NS (foo = 'x' , f = 'c' , bar = ['a' , 'b' ]), args )
6101
+ args = parser .parse_args (['x' , 'run' , '--' , 'a' , '--' , 'b' ])
6102
+ self .assertEqual (NS (foo = 'x' , f = None , bar = ['a' , '--' , 'b' ]), args )
6103
+ args = parser .parse_args (['x' , '--' , 'run' , '--' , 'a' , '--' , 'b' ])
6104
+ self .assertEqual (NS (foo = 'x' , f = None , bar = ['a' , '--' , 'b' ]), args )
6105
+ self .assertRaisesRegex (argparse .ArgumentError ,
6106
+ "invalid choice: '--'" ,
6107
+ parser .parse_args , ['--' , 'x' , '--' , 'run' , 'a' , 'b' ])
6108
+
6070
6109
6071
6110
# ===========================
6072
6111
# parse_intermixed_args tests
0 commit comments