]> xenbits.xensource.com Git - libvirt.git/commitdiff
tests: Introduce virhostdevmock
authorAndrea Bolognani <abologna@redhat.com>
Wed, 6 May 2020 12:38:42 +0000 (14:38 +0200)
committerAndrea Bolognani <abologna@redhat.com>
Wed, 6 May 2020 14:24:31 +0000 (16:24 +0200)
We need this for all tests that use virHostdevManager, because
during creation of this object for unprivileged connections
like those used in the test suite we would end up writing inside
the user's home directory.

That's bad manners in general, but when running the test suite
inside a purposefully constrained environment such as the one
exposed by pbuilder, it turns into an outright test failure:

  Could not initialize HostdevManager - operation failed: Failed
  to create state dir '/nonexistent/.cache/libvirt/hostdevmgr'

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/util/virutil.h
tests/Makefile.am
tests/qemuhotplugtest.c
tests/virhostdevmock.c [new file with mode: 0644]
tests/virhostdevtest.c

index ee23f0c1f407a9382ca4ff31c842e57128159e8e..49b4bf440ff143b6ae97e8beb576ebc809d462f8 100644 (file)
@@ -99,7 +99,7 @@ char *virGetUserDirectory(void);
 char *virGetUserDirectoryByUID(uid_t uid);
 char *virGetUserConfigDirectory(void);
 char *virGetUserCacheDirectory(void);
-char *virGetUserRuntimeDirectory(void);
+char *virGetUserRuntimeDirectory(void) G_GNUC_NO_INLINE;
 char *virGetUserShell(uid_t uid);
 char *virGetUserName(uid_t uid) G_GNUC_NO_INLINE;
 char *virGetGroupName(gid_t gid) G_GNUC_NO_INLINE;
index ada5b8fc571c9c30f6cf4cbaeae3e7df165df5ad..fc516376b490d76acea6515d2dc6eebb5c9c0cd2 100644 (file)
@@ -212,6 +212,7 @@ test_libraries = libshunload.la \
        libvirnetdaemonmock.la \
        libvirnetserverclientmock.la \
        libvircgroupmock.la \
+       libvirhostdevmock.la \
        libvirpcimock.la \
        libvirnetdevmock.la \
        libvirrandommock.la \
@@ -1226,6 +1227,12 @@ libvirfilecachemock_la_SOURCES = \
 libvirfilecachemock_la_LDFLAGS = $(MOCKLIBS_LDFLAGS)
 libvirfilecachemock_la_LIBADD = $(MOCKLIBS_LIBS)
 
+libvirhostdevmock_la_SOURCES = \
+       virhostdevmock.c \
+       $(NULL)
+libvirhostdevmock_la_LDFLAGS = $(MOCKLIBS_LDFLAGS)
+libvirhostdevmock_la_LIBADD = $(MOCKLIBS_LIBS)
+
 if WITH_LINUX
 vircaps2xmltest_SOURCES = \
        vircaps2xmltest.c testutils.h testutils.c virfilewrapper.h virfilewrapper.c
index 9a215ab303f27d7dd27d7bd7e80f4ba0aab8b690..cf87de187f152e4fab1c05f94068b2b2e0e1abaa 100644 (file)
@@ -900,6 +900,7 @@ mymain(void)
 }
 
 VIR_TEST_MAIN_PRELOAD(mymain,
+                      VIR_TEST_MOCK("virhostdev"),
                       VIR_TEST_MOCK("virpci"),
                       VIR_TEST_MOCK("domaincaps"),
                       VIR_TEST_MOCK("virprocess"),
diff --git a/tests/virhostdevmock.c b/tests/virhostdevmock.c
new file mode 100644 (file)
index 0000000..9b0e4dc
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * Copyright (C) 2020 Red Hat, Inc.
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include <config.h>
+
+#include "virutil.h"
+
+char *
+virGetUserRuntimeDirectory(void)
+{
+    return g_build_filename(g_getenv("LIBVIRT_FAKE_ROOT_DIR"),
+                            "user-runtime-directory", NULL);
+}
index b6260bd9c1cae3e85d369dfddb796862a04c8093..b0bad683a8687443a443f46a5b16bc598e905b1f 100644 (file)
@@ -628,7 +628,9 @@ mymain(void)
     return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
 }
 
-VIR_TEST_MAIN_PRELOAD(mymain, VIR_TEST_MOCK("virpci"))
+VIR_TEST_MAIN_PRELOAD(mymain,
+                      VIR_TEST_MOCK("virhostdev"),
+                      VIR_TEST_MOCK("virpci"))
 #else
 int
 main(void)