From: Michal Privoznik <mprivozn@redhat.com>
In one of previous commits the virTestMain() function was changed
to actually create fake HOME, XDG_RUNTIME_DIR, ... directories
instead of setting spoofed values in the environment. But
alongside with this, the call to virTestFakeRootDirInit() was
moved (to location where environment was poisoned). And this
would not matter if it wasn't for mocking. Because what we ended
up with is virTestFakeRootDirInit() is called and then
(optionally) the process re-execs itself (with mocks loaded).
This means that previously created root dirs are never cleaned
up and just pollute builddir.
Therefore, restore original location from which the function was
called.
Fixes: 79d97d2b4f0b55ea80f8330144953e2b93927e25
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
---
tests/testutils.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tests/testutils.c b/tests/testutils.c
index c984f66d0e..14e5c56fcf 100644
--- a/tests/testutils.c
+++ b/tests/testutils.c
@@ -859,9 +859,6 @@ int virTestMain(int argc,
preloads[npreloads] = NULL;
}
- if (!(fakerootdir = virTestFakeRootDirInit()))
- return EXIT_FAILURE;
-
va_start(ap, func);
while ((lib = va_arg(ap, const char *))) {
g_autofree char *abs_lib_path = g_strdup_printf("%s/%s", abs_builddir, lib);
@@ -934,6 +931,9 @@ int virTestMain(int argc,
failedTests = virBitmapNew(1);
+ if (!(fakerootdir = virTestFakeRootDirInit()))
+ return EXIT_FAILURE;
+
ret = (func)();
virResetLastError();
--
2.52.0
On Wed, Mar 11, 2026 at 12:28:32 +0100, Michal Privoznik wrote:
> From: Michal Privoznik <mprivozn@redhat.com>
>
> In one of previous commits the virTestMain() function was changed
> to actually create fake HOME, XDG_RUNTIME_DIR, ... directories
> instead of setting spoofed values in the environment. But
> alongside with this, the call to virTestFakeRootDirInit() was
> moved (to location where environment was poisoned). And this
> would not matter if it wasn't for mocking. Because what we ended
> up with is virTestFakeRootDirInit() is called and then
> (optionally) the process re-execs itself (with mocks loaded).
> This means that previously created root dirs are never cleaned
> up and just pollute builddir.
>
> Therefore, restore original location from which the function was
> called.
>
> Fixes: 79d97d2b4f0b55ea80f8330144953e2b93927e25
> Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
> ---
> tests/testutils.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/tests/testutils.c b/tests/testutils.c
> index c984f66d0e..14e5c56fcf 100644
> --- a/tests/testutils.c
> +++ b/tests/testutils.c
> @@ -859,9 +859,6 @@ int virTestMain(int argc,
> preloads[npreloads] = NULL;
> }
>
> - if (!(fakerootdir = virTestFakeRootDirInit()))
> - return EXIT_FAILURE;
> -
> va_start(ap, func);
> while ((lib = va_arg(ap, const char *))) {
> g_autofree char *abs_lib_path = g_strdup_printf("%s/%s", abs_builddir, lib);
> @@ -934,6 +931,9 @@ int virTestMain(int argc,
>
> failedTests = virBitmapNew(1);
>
> + if (!(fakerootdir = virTestFakeRootDirInit()))
> + return EXIT_FAILURE;
> +
> ret = (func)();
>
> virResetLastError();
> --
> 2.52.0
>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
© 2016 - 2026 Red Hat, Inc.