Message ID | 093c363fc005f3b4571750a6468b692f88c2f4b4.1454011611.git.crobinso@redhat.com |
---|---|
State | Accepted |
Commit | 3e9033f78a5be1242d2731580442f6b9e1f28e75 |
Headers | show |
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 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
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) { + 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())