33
44"""
55from sys import version_info
6- from tinyscript .argreparse import ArgumentParser , HelpFormatter , Namespace , SUPPRESS as SUP , _NewSubParsersAction
6+ from tinyscript .argreparse import *
7+ from tinyscript .argreparse import HelpFormatter , _NewSubParsersAction
78
89from utils import *
910
1011
1112class TestArgreparse (TestCase ):
1213 @classmethod
1314 def setUpClass (cls ):
15+ get_tool_globals ()
1416 cls .argv = sys .argv [1 :] # backup input arguments
1517
1618 @classmethod
@@ -21,7 +23,19 @@ def setUp(self):
2123 temp_stdout (self )
2224 sys .argv [1 :] = []
2325 ArgumentParser .reset ()
24- self .p = ArgumentParser (FIXTURES )
26+ self .p = ArgumentParser ()
27+
28+ def test_input_command (self ):
29+ ArgumentParser ._globals_dict = FIXTURES
30+ p = ArgumentParser (command = "test-tool --opt1 test --opt2" )
31+ self .assertIn ("test-tool" , p ._tokens )
32+ self .assertIn ("--opt1" , p ._tokens )
33+ self .assertIn ("--opt2" , p ._tokens )
34+ p .add_argument ("--opt1" )
35+ p .add_argument ("--opt2" , action = "store_true" )
36+ args = p .parse_args ()
37+ self .assertEqual (args .opt1 , "test" )
38+ self .assertEqual (args .opt2 , True )
2539
2640 def test_dunders (self ):
2741 self .assertIn ("test" , self .p .description )
@@ -47,21 +61,23 @@ def test_positional_arguments(self):
4761
4862 def test_optional_arguments (self ):
4963 self .p .add_argument ("--opt1" )
50- sys .argv += ["--opt1" , "test" ]
64+ sys .argv += ["--opt1" , "< test> " ]
5165 self .p .add_argument ("--opt2" , action = "store_true" )
5266 sys .argv += ["--opt2" ]
5367 self .p .add_argument ("-e" , dest = "ext" , action = "extend" )
5468 sys .argv += ["-e" , "1" , "-e" , "2" , "-e" , "3" ]
5569 self .p .add_argument ("-e2" , dest = "ext2" , action = "extend" , default = "BAD" )
5670 sys .argv += ["-e2" , "test" ]
57- args = self .p .parse_args ()
71+ self .assertRaises (ValueError , self .p .parse_args , namespace = Namespace (self .p , test = True ))
72+ args = self .p .parse_args (namespace = Namespace (self .p , test = "test" ))
5873 self .assertEqual (args .opt1 , "test" )
5974 self .assertEqual (args .opt2 , True )
6075 self .assertEqual (args .ext , ["1" , "2" , "3" ])
6176 self .assertEqual (args .ext2 , ["test" ])
6277
6378 def test_fixed_arguments (self ):
64- p = ArgumentParser ({'__examples__' : []})
79+ ArgumentParser ._globals_dict = {'__examples__' : []}
80+ p = ArgumentParser ()
6581 p .add_argument ("-v" , "--verb" )
6682 # this will conflict with the previous one and will then be suffixed
6783 p .add_argument ("-v" , "--verb" , suffix = "mode" , action = "store_true" )
@@ -76,6 +92,7 @@ def test_fixed_arguments(self):
7692 self .assertIs (args .version , None )
7793 self .assertFalse (args .show_version )
7894 self .assertRaises (ValueError , p .add_argument , "test" , type = "BAD" )
95+ del ArgumentParser ._globals_dict
7996
8097 def test_mutually_exclusive_arguments (self ):
8198 g = self .p .add_mutually_exclusive_group ()
@@ -101,8 +118,8 @@ def test_input_common_actions(self):
101118 self .p .add_argument ("-e" , action = "count" )
102119 self .p .add_argument ("--fff" , action = "count" )
103120 self .p .add_argument ("-g" , default = 1 , choices = [1 , 2 ])
104- self .p .add_argument ("-h" , action = "usage" , dest = SUP )
105- self .p .add_argument ("--help" , action = "help" , dest = SUP )
121+ self .p .add_argument ("-h" , action = "usage" , dest = SUPPRESS )
122+ self .p .add_argument ("--help" , action = "help" , dest = SUPPRESS )
106123 for a in self .p ._actions :
107124 temp_stdin (self , "\n " )
108125 self .p ._input_arg (a )
@@ -126,16 +143,16 @@ def test_set_common_actions(self):
126143 self .p .add_argument ("-d" , action = "store_false" )
127144 self .p .add_argument ("-e" , action = "count" )
128145 self .p .add_argument ("--fff" , action = "count" )
129- self .p .add_argument ("-h" , action = "usage" , dest = SUP )
130- self .p .add_argument ("--help" , action = "help" , dest = SUP )
146+ self .p .add_argument ("-h" , action = "usage" , dest = SUPPRESS )
147+ self .p .add_argument ("--help" , action = "help" , dest = SUPPRESS )
131148 ArgumentParser .add_to_config ("main" , "a" , "TEST" )
132149 ArgumentParser .add_to_config ("main" , "b" , "add" )
133150 ArgumentParser .add_to_config ("main" , "c" , "y" )
134151 ArgumentParser .add_to_config ("main" , "d" , "n" )
135152 ArgumentParser .add_to_config ("main" , "e" , "1" )
136153 ArgumentParser .add_to_config ("main" , "fff" , "2" )
137154 for a in self .p ._actions :
138- self .p ._set_arg (a , c = True )
155+ self .p ._set_arg (a , config = True )
139156 args = self .p .parse_args ()
140157 self .assertEqual (args .a , "TEST" )
141158 self .assertEqual (args .b , "TEST" )
@@ -149,20 +166,21 @@ def test_set_common_actions(self):
149166 def test_subparser_action (self ):
150167 subparsers = self .p .add_subparsers (dest = "command" )
151168 test = subparsers .add_parser ("subtest" , aliases = ["test2" ], help = "test" , parents = [self .p ])
169+ self .assertIsNotNone (self .p .tokens )
152170 test .add_argument ("--test" )
153171 a = self .p ._actions [0 ]
154172 ArgumentParser .add_to_config ("main" , "command" , "subtest" )
155173 ArgumentParser .add_to_config ("subtest" , "test" , "value" )
156174 test ._config_parsed = True
157- self .p ._set_arg (a , c = True )
175+ self .p ._set_arg (a , config = True )
158176
159177 def test_bad_action (self ):
160178 self .assertRaises (ValueError , self .p .add_argument , "-a" , action = "does_not_exist" )
161179 self .p .register ('action' , "does_not_exist" , _FakeParserAction )
162180 self .p .add_argument ("-a" , dest = "test" , action = "does_not_exist" )
163181 a = list (self .p ._filtered_actions ("does_not_exist" ))[0 ]
164182 self .assertRaises (NotImplementedError , self .p ._input_arg , a )
165- self .assertRaises (NotImplementedError , self .p ._set_arg , a , c = True )
183+ self .assertRaises (NotImplementedError , self .p ._set_arg , a , config = True )
166184
167185 def test_reset_args (self ):
168186 subparsers = self .p .add_subparsers (dest = "command" )
@@ -188,7 +206,7 @@ def test_parser_subparsers(self):
188206
189207 def test_help_formatter (self ):
190208 self .p .add_argument ("--test" , default = "," .join (["A" ]* 30 ), choices = [1 ], type = list , help = "test" ,
191- note = "special argument" , dest = SUP )
209+ note = "special argument" , dest = SUPPRESS )
192210 self .p .parse_args ()
193211 self .p .print_help ()
194212 self .p .print_extended_help (3 )
@@ -203,8 +221,7 @@ def test_namespace(self):
203221 test .add_argument ("--test" )
204222 ns = Namespace (self .p )
205223 setattr (ns , "_hidden" , "hidden" )
206- setattr (ns , "name" , "shown" )
207- setattr (ns , "command" , "subtest" )
224+ ns .update (name = "shown" , command = "subtest" )
208225 self .assertIsNotNone (self .p .format_help ())
209226 self .assertEqual (ns ._hidden , "hidden" )
210227 self .assertNotIn ("hidden" , str (ns ))
@@ -216,4 +233,10 @@ def test_namespace(self):
216233 self .assertIn ("name" , o )
217234 self .assertNotIn ("_collisions" , o )
218235 self .assertIs (ns .get ("does_not_exist" ), None )
236+
237+ def test_proxy_parser (self ):
238+ with ProxyArgumentParser () as pap :
239+ self .assertIsNotNone (pap )
240+ pap .add_argument ("test" , help = "test" )
241+ pap .reset ()
219242
0 commit comments