[libvirt] [PATCH 03/11] test: xml2xml: Print full filenames if xml2xml test fails

Peter Krempa pkrempa at redhat.com
Wed Nov 19 10:23:16 UTC 2014


To simplify looking for a problem instrument the XML comparator function
with possibility to print the filename of the failed/expected XML
output.

This is necessary as the VIR_TEST_DIFFERENT macro possibly tests two XML
files for the inactive/active state and the resulting error may not be
obvious.
---
 tests/qemuxml2xmltest.c |  2 +-
 tests/testutils.c       | 35 ++++++++++++++++++++++++++++++-----
 tests/testutils.h       |  5 +++++
 3 files changed, 36 insertions(+), 6 deletions(-)

diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index ca11e90..a5dccd5 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -50,7 +50,7 @@ testCompareXMLToXMLFiles(const char *inxml, const char *outxml, bool live)
         goto fail;

     if (STRNEQ(outXmlData, actual)) {
-        virtTestDifference(stderr, outXmlData, actual);
+        virtTestDifferenceFull(stderr, outXmlData, outxml, actual, inxml);
         goto fail;
     }

diff --git a/tests/testutils.c b/tests/testutils.c
index 9d6980f..9a79f98 100644
--- a/tests/testutils.c
+++ b/tests/testutils.c
@@ -450,14 +450,19 @@ virtTestCaptureProgramOutput(const char *const argv[] ATTRIBUTE_UNUSED,
 /**
  * @param stream: output stream write to differences to
  * @param expect: expected output text
+ * @param expectName: name designator of the expected text
  * @param actual: actual output text
+ * @param actualName: name designator of the actual text
  *
- * Display expected and actual output text, trimmed to
- * first and last characters at which differences occur
+ * Display expected and actual output text, trimmed to first and last
+ * characters at which differences occur. Displays names of the text strings if
+ * non-NULL.
  */
-int virtTestDifference(FILE *stream,
-                       const char *expect,
-                       const char *actual)
+int virtTestDifferenceFull(FILE *stream,
+                           const char *expect,
+                           const char *expectName,
+                           const char *actual,
+                           const char *actualName)
 {
     const char *expectStart;
     const char *expectEnd;
@@ -495,11 +500,15 @@ int virtTestDifference(FILE *stream,
     }

     /* Show the trimmed differences */
+    if (expectName)
+        fprintf(stream, "\nIn '%s':", expectName);
     fprintf(stream, "\nOffset %d\nExpect [", (int) (expectStart - expect));
     if ((expectEnd - expectStart + 1) &&
         fwrite(expectStart, (expectEnd-expectStart+1), 1, stream) != 1)
         return -1;
     fprintf(stream, "]\n");
+    if (actualName)
+        fprintf(stream, "In '%s':\n", actualName);
     fprintf(stream, "Actual [");
     if ((actualEnd - actualStart + 1) &&
         fwrite(actualStart, (actualEnd-actualStart+1), 1, stream) != 1)
@@ -520,6 +529,22 @@ int virtTestDifference(FILE *stream,
  * Display expected and actual output text, trimmed to
  * first and last characters at which differences occur
  */
+int virtTestDifference(FILE *stream,
+                       const char *expect,
+                       const char *actual)
+{
+    return virtTestDifferenceFull(stream, expect, NULL, actual, NULL);
+}
+
+
+/**
+ * @param stream: output stream write to differences to
+ * @param expect: expected output text
+ * @param actual: actual output text
+ *
+ * Display expected and actual output text, trimmed to
+ * first and last characters at which differences occur
+ */
 int virtTestDifferenceBin(FILE *stream,
                           const char *expect,
                           const char *actual,
diff --git a/tests/testutils.h b/tests/testutils.h
index ad28ea7..d78818d 100644
--- a/tests/testutils.h
+++ b/tests/testutils.h
@@ -64,6 +64,11 @@ void virtTestClearCommandPath(char *cmdset);
 int virtTestDifference(FILE *stream,
                        const char *expect,
                        const char *actual);
+int virtTestDifferenceFull(FILE *stream,
+                           const char *expect,
+                           const char *expectName,
+                           const char *actual,
+                           const char *actualName);
 int virtTestDifferenceBin(FILE *stream,
                           const char *expect,
                           const char *actual,
-- 
2.1.0




More information about the libvir-list mailing list