From ef3b22e589ebf7419c7f77eee479859e77ff9b64 Mon Sep 17 00:00:00 2001 From: Andrea Bolognani Date: Wed, 1 Mar 2023 10:39:44 +0100 Subject: [PATCH] tests: Introduce helpers for fakerootdir handling We have this logic open-coded all over the test suite. Provide proper helpers implementing it. Signed-off-by: Andrea Bolognani Reviewed-by: Laine Stump --- tests/testutils.c | 26 ++++++++++++++++++++++++++ tests/testutils.h | 3 +++ 2 files changed, 29 insertions(+) diff --git a/tests/testutils.c b/tests/testutils.c index 8fe624f029..fe7677ebfb 100644 --- a/tests/testutils.c +++ b/tests/testutils.c @@ -766,6 +766,32 @@ virTestSetEnvPath(void) return 0; } +#define FAKEROOTDIRTEMPLATE abs_builddir "/fakerootdir-XXXXXX" + +char* +virTestFakeRootDirInit(void) +{ + g_autofree char *fakerootdir = g_strdup(FAKEROOTDIRTEMPLATE); + + if (!g_mkdtemp(fakerootdir)) { + fprintf(stderr, "Cannot create fakerootdir"); + return NULL; + } + + g_setenv("LIBVIRT_FAKE_ROOT_DIR", fakerootdir, TRUE); + + return g_steal_pointer(&fakerootdir); +} + +void +virTestFakeRootDirCleanup(char *fakerootdir) +{ + g_unsetenv("LIBVIRT_FAKE_ROOT_DIR"); + + if (!g_getenv("LIBVIRT_SKIP_CLEANUP")) + virFileDeleteTree(fakerootdir); +} + int virTestMain(int argc, char **argv, int (*func)(void), diff --git a/tests/testutils.h b/tests/testutils.h index 869b58bd1e..cf8a346dff 100644 --- a/tests/testutils.h +++ b/tests/testutils.h @@ -101,6 +101,9 @@ void virTestQuiesceLibvirtErrors(bool always); void virTestCounterReset(const char *prefix); const char *virTestCounterNext(void); +char *virTestFakeRootDirInit(void); +void virTestFakeRootDirCleanup(char *fakerootdir); + /** * The @func shall return EXIT_FAILURE or EXIT_SUCCESS or * EXIT_AM_SKIP or EXIT_AM_HARDFAIL.