From: Andrea Bolognani Date: Wed, 1 Mar 2023 09:39:44 +0000 (+0100) Subject: tests: Introduce helpers for fakerootdir handling X-Git-Tag: v9.2.0-rc1~238 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ef3b22e589ebf7419c7f77eee479859e77ff9b64;p=thirdparty%2Flibvirt.git 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 --- 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.