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.
This commit is contained in:
Andrea Bolognani 2015-12-04 10:05:56 +01:00
parent b76d936670
commit f94398e72e

View File

@ -49,6 +49,7 @@ static DIR * (*realopendir)(const char *name);
* when passed as an arg to virAsprintf() * 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] * 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; char *fakesysfsdir;
# define PCI_SYSFS_PREFIX "/sys/bus/pci/" # define PCI_SYSFS_PREFIX "/sys/bus/pci/"
@ -800,12 +801,19 @@ init_syms(void)
static void static void
init_env(void) init_env(void)
{ {
if (fakesysfsdir) if (fakerootdir && fakesysfsdir)
return; return;
if (!(fakesysfsdir = getenv("LIBVIRT_FAKE_SYSFS_DIR"))) if (!(fakerootdir = getenv("LIBVIRT_FAKE_SYSFS_DIR")))
ABORT("Missing LIBVIRT_FAKE_SYSFS_DIR env variable\n"); 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); make_file(fakesysfsdir, "drivers_probe", NULL, -1);
# define MAKE_PCI_DRIVER(name, ...) \ # define MAKE_PCI_DRIVER(name, ...) \