[libvirt] [PATCH 3/7] tests: pcimock: Use the temporary directory as fake root

Andrea Bolognani abologna at redhat.com
Fri Dec 4 14:34:06 UTC 2015


We might need to mock files living outside PCI_SYSFS_PREFIX later on,
so it's better to treat the temporary directory we are passed via
the environment as the root of the fake filesystem and create
PCI_SYSFS_PREFIX inside it.

The environment variable name will be changed to reflect the new use
we're making of it in a later commit.
---
 tests/virpcimock.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/tests/virpcimock.c b/tests/virpcimock.c
index 6d00a4f..f1517ce 100644
--- a/tests/virpcimock.c
+++ b/tests/virpcimock.c
@@ -49,6 +49,7 @@ static DIR * (*realopendir)(const char *name);
  * when passed as an arg to virAsprintf()
  * vircgroupmock.c:462:22: error: static variable 'fakesysfsdir' is used in an inline function with external linkage [-Werror,-Wstatic-in-inline]
  */
+char *fakerootdir;
 char *fakesysfsdir;
 
 # define PCI_SYSFS_PREFIX "/sys/bus/pci/"
@@ -800,12 +801,19 @@ init_syms(void)
 static void
 init_env(void)
 {
-    if (fakesysfsdir)
+    if (fakerootdir && fakesysfsdir)
         return;
 
-    if (!(fakesysfsdir = getenv("LIBVIRT_FAKE_SYSFS_DIR")))
+    if (!(fakerootdir = getenv("LIBVIRT_FAKE_SYSFS_DIR")))
         ABORT("Missing LIBVIRT_FAKE_SYSFS_DIR env variable\n");
 
+    if (virAsprintfQuiet(&fakesysfsdir, "%s%s",
+                         fakerootdir, PCI_SYSFS_PREFIX) < 0)
+        ABORT_OOM();
+
+    if (virFileMakePath(fakesysfsdir) < 0)
+        ABORT("Unable to create: %s", fakesysfsdir);
+
     make_file(fakesysfsdir, "drivers_probe", NULL, -1);
 
 # define MAKE_PCI_DRIVER(name, ...)                                     \
-- 
2.5.0




More information about the libvir-list mailing list