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.