diff --git a/fluidsim/util/testing.py b/fluidsim/util/testing.py index da3dc04d0235f36f6b5653a5ed7c4bd05d1a9121_Zmx1aWRzaW0vdXRpbC90ZXN0aW5nLnB5..19b7531f78b8763e976035e7f3b612283996e17d_Zmx1aWRzaW0vdXRpbC90ZXN0aW5nLnB5 100644 --- a/fluidsim/util/testing.py +++ b/fluidsim/util/testing.py @@ -14,6 +14,7 @@ import unittest import argparse import time +from warnings import warn import matplotlib from importlib import import_module @@ -101,6 +102,22 @@ return result +def import_test_module(module_name:str): + """Smarter import handling common mistakes with warnings.""" + if not module_name.startswith("fluidsim"): + warn(f"Assuming you forgot to add fluidsim in front of module name: {module_name}") + module_name = ".".join(("fluidsim", module_name)) + + try: + module = import_module(module_name) + except ModuleNotFoundError: + module_name = ".".join(module_name.split(".")[:-1]) + warn(f"Module not found. Attempting {module_name} instead") + module = import_module(module_name) + finally: + return module + + def discover_tests(module_name="fluidsim", start_dir=None, verbose=False): """Discovers all tests under a module or directory. Similar to `python -m unittest discover`. @@ -122,7 +139,7 @@ """ if start_dir is None: - module = import_module(module_name) + module = import_test_module(module_name) path_src = inspect.getfile(module) start_dir = os.path.dirname(path_src) @@ -152,7 +169,7 @@ suite = unittest.TestSuite() for module in modules: module = module.replace(os.path.sep, ".") - module = import_module(module) + module = import_test_module(module) tests = unittest.defaultTestLoader.loadTestsFromModule(module) suite.addTests(tests)