diff --git a/tests/qemu-iotests/meson.build b/tests/qemu-iotests/meson.build index 53847cb98fc73bf08c8eb1128cab6f7cbd5361e8..3054e4b7923112ff1e3a54aca3bf9acaebd1d258 100644 --- a/tests/qemu-iotests/meson.build +++ b/tests/qemu-iotests/meson.build @@ -2,14 +2,6 @@ if not have_tools or targetos == 'windows' subdir_done() endif -foreach cflag: qemu_ldflags - if cflag.startswith('-fsanitize') and \ - not cflag.contains('safe-stack') and not cflag.contains('cfi-icall') - message('Sanitizers are enabled ==> Disabled the qemu-iotests.') - subdir_done() - endif -endforeach - bash = find_program('bash', required: false, version: '>= 4.0') if not bash.found() message('bash >= v4.0 not available ==> Disabled the qemu-iotests.') diff --git a/tests/qemu-iotests/testrunner.py b/tests/qemu-iotests/testrunner.py index 7b322272e9208e17b4d96d98bff4f2bddbe67997..8fffb6b652dabeccd70fb8a38372ae65e72f205a 100644 --- a/tests/qemu-iotests/testrunner.py +++ b/tests/qemu-iotests/testrunner.py @@ -265,10 +265,21 @@ def do_run_test(self, test: str) -> TestResult: Path(env[d]).mkdir(parents=True, exist_ok=True) test_dir = env['TEST_DIR'] + f_asan = Path(test_dir, f_test.name + '.out.asan') f_bad = Path(test_dir, f_test.name + '.out.bad') f_notrun = Path(test_dir, f_test.name + '.notrun') f_casenotrun = Path(test_dir, f_test.name + '.casenotrun') + env['ASAN_OPTIONS'] = f'detect_leaks=0:log_path={f_asan}' + + def unlink_asan(): + with os.scandir(test_dir) as it: + for entry in it: + if entry.name.startswith(f_asan.name): + os.unlink(entry) + + unlink_asan() + for p in (f_notrun, f_casenotrun): silent_unlink(p) @@ -314,6 +325,7 @@ def do_run_test(self, test: str) -> TestResult: description=f'output mismatch (see {f_bad})', diff=diff, casenotrun=casenotrun) else: + unlink_asan() f_bad.unlink() return TestResult(status='pass', elapsed=elapsed, casenotrun=casenotrun)