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

Cole Robinson crobinso at redhat.com
Fri Feb 5 20:08:51 UTC 2016


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




More information about the libvir-list mailing list