]> xenbits.xensource.com Git - libvirt.git/commitdiff
tests.testutils: use VIR_TEST_REGENERATE_OUTPUT for virTestDifferenceFull
authorPavel Hrdina <phrdina@redhat.com>
Thu, 10 Dec 2015 12:40:54 +0000 (13:40 +0100)
committerPavel Hrdina <phrdina@redhat.com>
Fri, 8 Jan 2016 15:08:15 +0000 (16:08 +0100)
This patch enable regeneration of expected output file for
virTestDifferenceFull.  It also introduces new
virTestDifferenceFullNoRegenerate function for special cases, where we
don't want to regenerate output.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
tests/qemuxml2xmltest.c
tests/testutils.c
tests/testutils.h

index f967ceb94d0ca87733f89cf14cd7f15d6828ef55..2312f72dfd8f3f402a6130940a040163c10bc3b0 100644 (file)
@@ -188,9 +188,11 @@ testCompareStatusXMLToXMLFiles(const void *opaque)
     }
 
     if (STRNEQ(actual, expect)) {
-        virtTestDifferenceFull(stderr,
-                               expect, data->outActiveName,
-                               actual, data->inName);
+        /* For status test we don't want to regenerate output to not
+         * add the status data.*/
+        virtTestDifferenceFullNoRegenerate(stderr,
+                                           expect, data->outActiveName,
+                                           actual, data->inName);
         goto cleanup;
     }
 
index 2b0d3b6e679d9c3d970d679854709d1badf1358d..70e34564a48623bd33827cfeb19560222852a89c 100644 (file)
@@ -440,16 +440,19 @@ virtTestCaptureProgramOutput(const char *const argv[] ATTRIBUTE_UNUSED,
  * @param expectName: name designator of the expected text
  * @param actual: actual output text
  * @param actualName: name designator of the actual text
+ * @param regenerate: enable or disable regenerate functionality
  *
  * 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 virtTestDifferenceFull(FILE *stream,
-                           const char *expect,
-                           const char *expectName,
-                           const char *actual,
-                           const char *actualName)
+static int
+virtTestDifferenceFullInternal(FILE *stream,
+                               const char *expect,
+                               const char *expectName,
+                               const char *actual,
+                               const char *actualName,
+                               bool regenerate)
 {
     const char *expectStart;
     const char *expectEnd;
@@ -466,6 +469,12 @@ int virtTestDifferenceFull(FILE *stream,
     actualStart = actual;
     actualEnd = actual + (strlen(actual)-1);
 
+    if (regenerate && virTestGetRegenerate() > 0) {
+        if (expectName && actual &&
+            virFileWriteStr(expectName, actual, 0666) < 0)
+            return -1;
+    }
+
     if (!virTestGetDebug())
         return 0;
 
@@ -508,6 +517,52 @@ int virtTestDifferenceFull(FILE *stream,
     return 0;
 }
 
+/**
+ * @param stream: output stream to write 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. Displays names of the text strings if
+ * non-NULL. If VIR_TEST_REGENERATE_OUTPUT is used, this function will
+ * regenerate the expected file.
+ */
+int
+virtTestDifferenceFull(FILE *stream,
+                       const char *expect,
+                       const char *expectName,
+                       const char *actual,
+                       const char *actualName)
+{
+    return virtTestDifferenceFullInternal(stream, expect, expectName,
+                                          actual, actualName, true);
+}
+
+/**
+ * @param stream: output stream to write 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. Displays names of the text strings if
+ * non-NULL. If VIR_TEST_REGENERATE_OUTPUT is used, this function will not
+ * regenerate the expected file.
+ */
+int
+virtTestDifferenceFullNoRegenerate(FILE *stream,
+                                   const char *expect,
+                                   const char *expectName,
+                                   const char *actual,
+                                   const char *actualName)
+{
+    return virtTestDifferenceFullInternal(stream, expect, expectName,
+                                          actual, actualName, false);
+}
+
 /**
  * @param stream: output stream to write differences to
  * @param expect: expected output text
@@ -516,11 +571,14 @@ int virtTestDifferenceFull(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)
+int
+virtTestDifference(FILE *stream,
+                   const char *expect,
+                   const char *actual)
 {
-    return virtTestDifferenceFull(stream, expect, NULL, actual, NULL);
+    return virtTestDifferenceFullNoRegenerate(stream,
+                                              expect, NULL,
+                                              actual, NULL);
 }
 
 
index 8ef70e40b86417ae09e622947d93d096259fd3e5..3bd90044a873a1c38a1a4463b1b98edae380b586 100644 (file)
@@ -67,6 +67,11 @@ int virtTestDifferenceFull(FILE *stream,
                            const char *expectName,
                            const char *actual,
                            const char *actualName);
+int virtTestDifferenceFullNoRegenerate(FILE *stream,
+                                       const char *expect,
+                                       const char *expectName,
+                                       const char *actual,
+                                       const char *actualName);
 int virtTestDifferenceBin(FILE *stream,
                           const char *expect,
                           const char *actual,