Re: [PATCH 1/9] tests: Run test-wrap-argv with REGENERATE_OUTPUT

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 01/28/2016 03:30 PM, Cole Robinson wrote:
To get properly wrapped output
---
  tests/testutils.c | 38 +++++++++++++++++++++++++++++++-------
  1 file changed, 31 insertions(+), 7 deletions(-)

diff --git a/tests/testutils.c b/tests/testutils.c
index b587f83..10c26648 100644
--- a/tests/testutils.c
+++ b/tests/testutils.c
@@ -433,6 +433,32 @@ virtTestCaptureProgramOutput(const char *const argv[] ATTRIBUTE_UNUSED,
  }
  #endif /* !WIN32 */
+static int
+virTestRewrapFile(const char *filename)
+{
+    int ret = -1;
+    char *outbuf = NULL;
+    char *script = NULL;
+    virCommandPtr cmd = NULL;
+
+    if (virAsprintf(&script, "%s/test-wrap-argv.pl", abs_srcdir) < 0)
+        goto cleanup;
+
+    cmd = virCommandNewArgList(script, filename, NULL);
+    virCommandSetOutputBuffer(cmd, &outbuf);
+    if (virCommandRun(cmd, NULL) < 0)
+        goto cleanup;
+
+    if (virFileWriteStr(filename, outbuf, 0666) < 0)
+        goto cleanup;
+
+    ret = 0;
+ cleanup:
+    VIR_FREE(script);
+    virCommandFree(cmd);
+    VIR_FREE(outbuf);
+    return ret;
+}
/**
   * @param stream: output stream to write differences to
@@ -470,17 +496,15 @@ virtTestDifferenceFullInternal(FILE *stream,
      actualEnd = actual + (strlen(actual)-1);
if (expectName && regenerate && (virTestGetRegenerate() > 0)) {
-        char *regencontent;
-
-        /* Try to properly indent qemu argv files */
-        if (!(regencontent = virStringReplace(actual, " -", " \\\n-")))
+        if (virFileWriteStr(expectName, actual, 0666) < 0) {

I always get nervous when I see 666 instead of 644 (even though the user's umask is probably going to trim that back to at least 644 anyway). Any reason for doing that?

+            virDispatchError(NULL);
              return -1;
+        }
- if (virFileWriteStr(expectName, regencontent, 0666) < 0) {
-            VIR_FREE(regencontent);
+        if (virTestRewrapFile(expectName) < 0) {
+            virDispatchError(NULL);
              return -1;
          }
-        VIR_FREE(regencontent);
      }
if (!virTestGetDebug())

A bit inefficient to write the file only to re-read/re-write it, but it does guarantee you'll get exactly what you want, and isn't done very often so peak efficiency isn't really an issue :-)

ACK.

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]