[libvirt] [PATCH] tests: Fix VIR_TEST_REGENERATE_OUTPUT
Cole Robinson
crobinso at redhat.com
Wed Apr 13 12:37:48 UTC 2016
On 04/12/2016 08:54 PM, Laine Stump wrote:
> On 04/12/2016 06:33 PM, Cole Robinson wrote:
>> commit 950a90d489 mocked some virCommand handling for the qemu tests,
>> but we were using that in the test suite to call test-wrap-argv.pl for
>> regenerating test output.
>>
>> Switch the generator code to just use system() instead
>> ---
>
> I dislike giving up the potential utility of virCommand*() in tests, but this
> does fix the problem (without creating the inefficiency of an extra function
> in the callstack for every virCommandRun() call by every libvirtd in the
> world). So ACK unless someone has a better idea / different opinion. (But
> there's one thing to fix, noted below).
>
> (if this was in a binary run outside the build environment, I would NACK use
> of system(), but since it's only used by a test...)
>
Agreed, I wouldn't advocate system() use in end user code. FWIW there's
already a usage of system() in testutils.c, though I suspect it predates
virCommand
>
>> tests/testutils.c | 19 +++++--------------
>> 1 file changed, 5 insertions(+), 14 deletions(-)
>>
>> diff --git a/tests/testutils.c b/tests/testutils.c
>> index a0ce4b6..4f3e67b 100644
>> --- a/tests/testutils.c
>> +++ b/tests/testutils.c
>> @@ -434,24 +434,15 @@ virTestRewrapFile(const char *filename)
>> {
>> int ret = -1;
>> char *outbuf = NULL;
>
> outbuf is no longer used, so it should be removed.
>
>> - char *script = NULL;
>> - virCommandPtr cmd = NULL;
>> + char *cmd = NULL;
>> - if (virAsprintf(&script, "%s/test-wrap-argv.pl", abs_srcdir) < 0)
>> + if (virAsprintf(&cmd, "echo \"$(%s/test-wrap-argv.pl %s)\" > %s",
>> + abs_srcdir, filename, filename) < 0)
>> goto cleanup;
>
> For that matter, cmd would be NULL if virAsprintf failed, so all that's really
> needed here is a "return -1;", meaning that the cleanup label can also be
> removed.
>
Yes that simplifies things a lot. Made the changes locally, I'll give it a day
and see if anyone else comments, if not I'll push.
Thanks,
Cole
>> - 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;
>> + ret = system(cmd);
>> cleanup:
>> - VIR_FREE(script);
>> - virCommandFree(cmd);
>> + VIR_FREE(cmd);
>> VIR_FREE(outbuf);
>> return ret;
>> }
>
More information about the libvir-list
mailing list