diff mbox

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

Message ID 093c363fc005f3b4571750a6468b692f88c2f4b4.1454011611.git.crobinso@redhat.com
State Accepted
Commit 3e9033f78a5be1242d2731580442f6b9e1f28e75
Headers show

Commit Message

Cole Robinson Jan. 28, 2016, 8:30 p.m. UTC
To get properly wrapped output
---
 tests/testutils.c | 38 +++++++++++++++++++++++++++++++-------
 1 file changed, 31 insertions(+), 7 deletions(-)

-- 
2.5.0

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

Comments

Cole Robinson Feb. 5, 2016, 8:08 p.m. UTC | #1
On 02/05/2016 12:46 PM, Laine Stump wrote:
> 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?

> 


The 0666 was in my original patch from last year, and I don't think there was
any reason behind it. Probably just copy/pasted from another usage of
virFileWriteStr. I've made a note to verify nothing depends on it, and if it's
safe I'll file a follow up patch.

>> +            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.


Thanks, pushed.

- Cole

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

Patch

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) {
+            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())