Clear internal caches before running each test.
@@ -431,6 +431,15 @@ def _compare_output(expected: T.List[T.Dict[str, str]], output: str, desc: str)
def validate_output(test: TestDef, stdo: str, stde: str) -> str:
return _compare_output(test.stdout, stdo, 'stdout')
+# 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()
@@ -551,6 +560,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)
