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.
Signed-off-by: Ján Tomko <jtomko(a)redhat.com>
---
tests/virshtest.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/tests/virshtest.c b/tests/virshtest.c
index 83675710ea..add33215b7 100644
--- a/tests/virshtest.c
+++ b/tests/virshtest.c
@@ -5,6 +5,7 @@
#include "internal.h"
#include "virxml.h"
#include "testutils.h"
+#include "vircommand.h"
#include "virstring.h"
#define VIR_FROM_THIS VIR_FROM_NONE
@@ -61,10 +62,26 @@ testCompareOutputLit(const char *expectData,
const char *filter, const char *const argv[])
{
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;
+ 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)
return -1;
--
2.21.1