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

Laine Stump laine at laine.org
Fri Feb 5 17:46:17 UTC 2016


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.




More information about the libvir-list mailing list