From f94398e72e7d41a9798a4f82aafdc698a1b639d3 Mon Sep 17 00:00:00 2001 From: Andrea Bolognani Date: Fri, 4 Dec 2015 10:05:56 +0100 Subject: [PATCH] tests: pcimock: Use the temporary directory as fake root 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 6d00a4fd65..f1517ce73b 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, ...) \