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