[libvirt] [PATCH 07/24] tests: utils: Add virTestLoadFilePath helper

Peter Krempa pkrempa at redhat.com
Wed Jul 26 10:00:37 UTC 2017


This new helper loads and returns a file from 'abs_srcdir'. By using
variable arguments for the function, it's not necessary to format the
path separately in the test cases.
---
 tests/testutils.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/testutils.h |  2 ++
 2 files changed, 53 insertions(+)

diff --git a/tests/testutils.c b/tests/testutils.c
index 7f1c4672b..f193cdf8b 100644
--- a/tests/testutils.c
+++ b/tests/testutils.c
@@ -356,6 +356,57 @@ virTestLoadFile(const char *file, char **buf)
     return 0;
 }

+
+static char *
+virTestLoadFileGetPath(const char *p,
+                       va_list ap)
+{
+    virBuffer buf = VIR_BUFFER_INITIALIZER;
+    char *path = NULL;
+
+    virBufferAddLit(&buf, abs_srcdir "/");
+
+    if (p) {
+        virBufferAdd(&buf, p, -1);
+        virBufferStrcatVArgs(&buf, ap);
+    }
+
+    if (!(path = virBufferContentAndReset(&buf)))
+        VIR_TEST_VERBOSE("failed to format file path");
+
+    return path;
+}
+
+
+/**
+ * virTestLoadFilePath:
+ * @...: file name components.
+ *
+ * Constructs the test file path from variable arguments and loads the file.
+ * 'abs_srcdir' is automatically prepended.
+ */
+char *
+virTestLoadFilePath(const char *p, ...)
+{
+    char *path = NULL;
+    char *ret = NULL;
+    va_list ap;
+
+    va_start(ap, p);
+
+    if (!(path = virTestLoadFileGetPath(p, ap)))
+        goto cleanup;
+
+    ignore_value(virTestLoadFile(path, &ret));
+
+ cleanup:
+    va_end(ap);
+    VIR_FREE(path);
+
+    return ret;
+}
+
+
 #ifndef WIN32
 static
 void virTestCaptureProgramExecChild(const char *const argv[],
diff --git a/tests/testutils.h b/tests/testutils.h
index c7f02e468..98dfa990e 100644
--- a/tests/testutils.h
+++ b/tests/testutils.h
@@ -52,6 +52,8 @@ int virTestRun(const char *title,
                int (*body)(const void *data),
                const void *data);
 int virTestLoadFile(const char *file, char **buf);
+char *virTestLoadFilePath(const char *p, ...)
+    ATTRIBUTE_SENTINEL;
 int virTestCaptureProgramOutput(const char *const argv[], char **buf, int maxlen);

 void virTestClearCommandPath(char *cmdset);
-- 
2.13.2




More information about the libvir-list mailing list