On Tue, Sep 29, 2015 at 07:56:46PM -0400, Cole Robinson wrote:
These event tests aren't run synchronously, so there isn't an
obvious
function to pass to virtTestRun. Instead, open code roughly what
virtTestResult did before: printing an error message if a test failed.
---
tests/eventtest.c | 57 +++++++++++++++++++++++++++++++++++++++++++++----------
1 file changed, 47 insertions(+), 10 deletions(-)
diff --git a/tests/eventtest.c b/tests/eventtest.c
index 13adbf6..ab08181 100644
--- a/tests/eventtest.c
+++ b/tests/eventtest.c
@@ -63,6 +63,43 @@ enum {
EV_ERROR_DATA,
};
+struct testEventResultData {
+ bool failed;
+ const char *msg;
+};
+
+static int
+testEventResultCallback(const void *opaque)
+{
+ const struct testEventResultData *data = opaque;
+
+ if (data->failed && data->msg) {
+ fprintf(stderr, "%s", data->msg);
+ }
+ return data->failed;
+}
+
+static void
+ATTRIBUTE_FMT_PRINTF(3,4)
+testEventReport(const char *name, bool failed, const char *msg, ...)
+{
+ va_list vargs;
+ va_start(vargs, msg);
+ char *str = NULL;
+ struct testEventResultData data;
+
+ if (msg && virVasprintfQuiet(&str, msg, vargs) != 0) {
+ failed = true;
+ }
+
+ data.failed = failed;
+ data.msg = msg;
I think you meant data.msg = str; here.
ACK with that changed and your amendment squashed in.
P.S.: If you'd really like, I think this test could be made to use
virTestRun as well ;)