1 # mitigate heap fragmentation issues by pre-loading major libraries
9 def yes_no(q, default=True):
10 a = input(q + " (Y/n)?" if default else " (y/N)?")
20 def multi_choice(q, choices, defaultPos=None):
21 if defaultPos is not None:
22 print("{} [{}]?".format(q, defaultPos))
25 for pos, choice in enumerate(choices):
26 print("{}) {}".format(pos, choice))
35 except Exception as e:
40 def test_module(module, runner=None):
43 runner = unittest.TestRunner()
44 suite = unittest.TestSuite()
45 for key in dir(module):
46 val = getattr(module, key)
48 if issubclass(val, unittest.TestCase):
52 return runner.run(suite)
54 def test_module_name(absolute, runner=None):
55 print("Testing {}".format(absolute))
56 module=__import__(absolute)
57 relatives = absolute.split(".")
58 if len(relatives) > 1:
59 for relative in relatives[1:]:
60 module = getattr(module, relative)
61 return test_module(module, runner)
63 def test_interactive(*module_names):
64 for module_name in module_names:
65 if yes_no("Test {}".format(module_name)):
67 test_module_name(module_name)
70 def test_prepare(casetype):
77 "testing.implementation.all.digitalio",