From: Daniel P. Berrangé Date: Tue, 10 Mar 2026 11:47:56 +0000 (+0000) Subject: tests/functional: remove heuristics for finding build dir X-Git-Tag: v11.0.0-rc1~8^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b86eff44ba09b4baea17d2b002afa221de753cc4;p=thirdparty%2Fqemu.git tests/functional: remove heuristics for finding build dir Currently some heuristics are used to locate the build dir, if the MESON_BUILD_ROOT environment variable is not set. These are not entirely accurate, however, especially if the developer is using nested sub-dirs under $PWD/build/... Since the introduction of the 'run' script, we can ensure any direct execution of the tests will have MESON_BUILD_ROOT set. Meanwhile when meson runs the test it will also have this env set. The only gap is when running pre-caching, and that is easily fixed to set MESON_BUILD_ROOT. It can thus be assumed that MESON_BUILD_ROOT will always be set in any supported execution scenario, which allows the heuristics to be removed. Signed-off-by: Daniel P. Berrangé Reviewed-by: Thomas Huth Message-ID: <20260310114756.146083-3-berrange@redhat.com> Signed-off-by: Thomas Huth --- diff --git a/tests/functional/meson.build b/tests/functional/meson.build index 0f7c90bed0f..3b42299e7ce 100644 --- a/tests/functional/meson.build +++ b/tests/functional/meson.build @@ -96,6 +96,7 @@ foreach speed : ['quick', 'thorough'] teststamp = testname + '.tstamp' test_precache_env = environment() test_precache_env.set('QEMU_TEST_PRECACHE', meson.current_build_dir() / teststamp) + test_precache_env.set('MESON_BUILD_ROOT', meson.project_build_root()) test_precache_env.set('PYTHONPATH', meson.project_source_root() / 'python:' + meson.current_source_dir()) precache = custom_target('func-precache-' + testname, diff --git a/tests/functional/qemu_test/config.py b/tests/functional/qemu_test/config.py index 0192027233e..e0893f630ee 100644 --- a/tests/functional/qemu_test/config.py +++ b/tests/functional/qemu_test/config.py @@ -24,15 +24,10 @@ def _build_dir(): root = os.getenv('MESON_BUILD_ROOT') if root is not None: return Path(root) - # Makefile.mtest only exists in build dir, so if it is available, use CWD - if os.path.exists('Makefile.mtest'): - return Path(os.getcwd()) - root = os.path.join(_source_dir(), 'build') - if os.path.exists(root): - return Path(root) - - raise Exception("Cannot identify build dir, set MESON_BUILD_ROOT") + raise Exception("Missing MESON_BUILD_ROOT environment variable. " + + "Please use the '/run' script if invoking " + + "directly instead of via make/meson") BUILD_DIR = _build_dir()