[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