Skip to content

Commit a2a8c03

Browse files
committed
Refined tests
1 parent 908c96c commit a2a8c03

3 files changed

Lines changed: 67 additions & 20 deletions

File tree

tests/test_argreparse.py

Lines changed: 38 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@
33
44
"""
55
from 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

89
from utils import *
910

1011

1112
class 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

tests/test_conf.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# -*- coding: UTF-8 -*-
2+
"""Root module's __conf__.py tests.
3+
4+
"""
5+
from tinyscript import *
6+
7+
from utils import *
8+
9+
10+
class TestConf(TestCase):
11+
def test_deprecation(self):
12+
self.assertWarns(DeprecationWarning, deprecate, "test", "test2")
13+
f = lambda x: x
14+
f.__name__ = "test"
15+
deprecate(f, "test2")
16+
self.assertWarns(DeprecationWarning, test, "ok")
17+
18+
def test_lazy_loading(self):
19+
lazy_load_module("gc", preload=lambda: True, postload=lambda m: True)
20+
self.assertIsNotNone(gc.DEBUG_LEAK)
21+
lazy_load_object("test", lambda: "ok", preload=lambda: True, postload=lambda m: True)
22+
self.assertIsNotNone(test.center(20))
23+

tests/test_template.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,15 @@
1010
class TestTemplate(TestCase):
1111
def test_script_generation(self):
1212
SCR = "test-script"
13+
PY = SCR + ".py"
1314
new(SCR)
14-
self.assertTrue(exists(SCR + ".py"))
15-
with open(SCR + ".py") as f:
15+
self.assertTrue(exists(PY))
16+
with open(PY) as f:
1617
self.assertIn("from tinyscript import *", f.read())
1718
for t in TARGETS.keys():
1819
new(SCR, t)
19-
self.assertTrue(exists(SCR + ".py"))
20-
with open(SCR + ".py") as f:
20+
self.assertTrue(exists(PY))
21+
with open(PY) as f:
2122
self.assertIn("from {} import {}".format(*t.split(".")), f.read())
22-
remove(SCR + ".py")
23+
remove()
2324

0 commit comments

Comments
 (0)