diff --git a/odoo/modules/module.py b/odoo/modules/module.py index dda40b6a8dc0bebaa22b2c11847817c31ebd7666..354f796f495ebf1d78014f38f51389539ed86a41 100644 --- a/odoo/modules/module.py +++ b/odoo/modules/module.py @@ -19,6 +19,7 @@ import threading import warnings from operator import itemgetter from os.path import join as opj +from pathlib import Path import odoo import odoo.tools as tools @@ -472,7 +473,7 @@ def get_test_modules(module): except ImportError: pass else: - results += _get_tests_modules('odoo.upgrade', module) + results += list(_get_upgrade_test_modules(module)) return results @@ -499,6 +500,18 @@ def _get_tests_modules(path, module): if name.startswith('test_')] return result +def _get_upgrade_test_modules(module): + upg = importlib.import_module("odoo.upgrade") + for path in map(Path, upg.__path__): + for test in (path / module / "tests").glob("test_*.py"): + spec = importlib.util.spec_from_file_location(f"odoo.upgrade.{module}.tests.{test.stem}", test) + if not spec: + continue + pymod = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = pymod + spec.loader.exec_module(pymod) + yield pymod + class OdooTestResult(unittest.result.TestResult): """