diff --git a/run_project_tests.py b/run_project_tests.py index 2ab6284f6..6d8930ea8 100755 --- a/run_project_tests.py +++ b/run_project_tests.py @@ -381,6 +381,15 @@ def run_ci_commands(raw_log: str) -> T.List[str]: return res +# There are some class variables and such that cahce +# information. Clear all of these. The better solution +# would be to change the code so that no state is persisted +# but that would be a lot of work given that Meson was originally +# coded to run as a batch process. +def clear_internal_caches(): + import mesonbuild.interpreterbase + mesonbuild.interpreterbase.FeatureNew.feature_registry = {} + def run_test_inprocess(testdir): old_stdout = sys.stdout sys.stdout = mystdout = StringIO() @@ -496,6 +505,7 @@ def _run_test(test: TestDef, test_build_dir: str, install_dir: str, extra_args, force_regenerate() # Test in-process + clear_internal_caches() test_start = time.time() (returncode, tstdo, tstde, test_log) = run_test_inprocess(test_build_dir) testresult.add_step(BuildStep.test, tstdo, tstde, test_log, time.time() - test_start)