提交 cf17015f 编写于 作者: J Ján Tomko

virshtest: use virCommand instead of custom impl

Our virCommand helper API already has the ability to capture
program output, there's no need to open-code it.

Apart from simplifying the code, the test is marginally faster
due to recent improvements in virCommandMassClose.

Until now, both stderr and stdout were stored in the same buffer.
This change stores stderr separately and expects it to be empty
for all the tests we currently run.
Signed-off-by: NJán Tomko <jtomko@redhat.com>
Reviewed-by: NDaniel P. Berrangé <berrange@redhat.com>
上级 8bacdde9
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "internal.h" #include "internal.h"
#include "virxml.h" #include "virxml.h"
#include "testutils.h" #include "testutils.h"
#include "vircommand.h"
#include "virstring.h" #include "virstring.h"
#define VIR_FROM_THIS VIR_FROM_NONE #define VIR_FROM_THIS VIR_FROM_NONE
...@@ -61,10 +62,26 @@ testCompareOutputLit(const char *expectData, ...@@ -61,10 +62,26 @@ testCompareOutputLit(const char *expectData,
const char *filter, const char *const argv[]) const char *filter, const char *const argv[])
{ {
g_autofree char *actualData = NULL; g_autofree char *actualData = NULL;
const char *empty = "";
g_autoptr(virCommand) cmd = NULL;
g_autofree char *errbuf = NULL;
if (virTestCaptureProgramOutput(argv, &actualData, 4096) < 0) if (!(cmd = virCommandNewArgs(argv)))
return -1; return -1;
virCommandAddEnvString(cmd, "LANG=C");
virCommandSetInputBuffer(cmd, empty);
virCommandSetOutputBuffer(cmd, &actualData);
virCommandSetErrorBuffer(cmd, &errbuf);
if (virCommandRun(cmd, NULL) < 0)
return -1;
if (STRNEQ(errbuf, "")) {
fprintf(stderr, "Command reported error: %s", errbuf);
return -1;
}
if (filter && testFilterLine(actualData, filter) < 0) if (filter && testFilterLine(actualData, filter) < 0)
return -1; return -1;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册