From: Cefn Hoile Date: Sun, 18 Feb 2018 01:36:27 +0000 (+0000) Subject: Added interactive logic. Pre-imported libraries X-Git-Tag: 0.1.0~4^2~126 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/07db32b9d054e5b831359415c7b5493400678a1b Added interactive logic. Pre-imported libraries --- diff --git a/python/testing/__init__.py b/python/testing/__init__.py index 4abfca1..b1db862 100644 --- a/python/testing/__init__.py +++ b/python/testing/__init__.py @@ -1,14 +1,78 @@ +# mitigate heap fragmentation issues by pre-loading major libraries +import gc +gc.collect() +import agnostic +gc.collect() import unittest +gc.collect() -def test_module(m, runner=None): +def yes_no(q, default=True): + a = input(q + " (Y/n)?" if default else " (y/N)?") + a=a.lower() + if a == '': + return default + elif a == "n": + a = False + elif a == "y": + a = True + return a + +def multi_choice(q, choices, defaultPos=None): + if defaultPos is not None: + print("{} [{}]?".format(q, defaultPos)) + else: + print(q + "?") + for pos, choice in enumerate(choices): + print("{}) {}".format(pos, choice)) + a = input() + a=a.lower() + try: + if a == '': + a = defaultPos + else: + a = int(a) + return choices[a] + except Exception as e: + print(e) + return None + + +def test_module(module, runner=None): + import unittest if runner is None: runner = unittest.TestRunner() suite = unittest.TestSuite() - for key in dir(m): - val = getattr(m, key) + for key in dir(module): + val = getattr(module, key) try: if issubclass(val, unittest.TestCase): suite.addTest(val) except: pass - return runner.run(suite) \ No newline at end of file + return runner.run(suite) + +def test_module_name(absolute, runner=None): + print("Testing {}".format(absolute)) + module=__import__(absolute) + relatives = absolute.split(".") + if len(relatives) > 1: + for relative in relatives[1:]: + module = getattr(module, relative) + return test_module(module, runner) + +def test_interactive(*module_names): + for module_name in module_names: + if yes_no("Test {}".format(module_name)): + gc.collect() + test_module_name(module_name) + + +def test_prepare(casetype): + case = casetype() + case.setUp() + + +def main(): + test_interactive( + "testing.platform.embedded", + ) \ No newline at end of file