diff mbox

[v9,05/27] qapi: More tests of alternate output

Message ID 1446618049-13596-6-git-send-email-eblake@redhat.com
State New
Headers show

Commit Message

Eric Blake Nov. 4, 2015, 6:20 a.m. UTC
The testsuite was only covering that we could output a built-in
branch of an alternate; make sure that things still work even
when a branch involves allocation, to ensure that we don't leak
when run under valgrind.

Update to modern style of g_new0() over g_malloc0() while
touching it.

Signed-off-by: Eric Blake <eblake@redhat.com>

---
v9: new patch, split off of 10/17
---
 tests/test-qmp-output-visitor.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

Comments

Markus Armbruster Nov. 4, 2015, 9:04 a.m. UTC | #1
Suggest "qapi: Test alternate output visitor with boxed type"

Eric Blake <eblake@redhat.com> writes:

> The testsuite was only covering that we could output a built-in
> branch of an alternate; make sure that things still work even

Well, 'str' is built-in, too.  "'int' branch"?

> when a branch involves allocation, to ensure that we don't leak
> when run under valgrind.

More pedantry: we'd leak when not running under valgrind just as much.

> Update to modern style of g_new0() over g_malloc0() while
> touching it.
>
> Signed-off-by: Eric Blake <eblake@redhat.com>

Patch looks good.
diff mbox

Patch

diff --git a/tests/test-qmp-output-visitor.c b/tests/test-qmp-output-visitor.c
index 0164984..0d0c859 100644
--- a/tests/test-qmp-output-visitor.c
+++ b/tests/test-qmp-output-visitor.c
@@ -425,8 +425,9 @@  static void test_visitor_out_alternate(TestOutputVisitorData *data,
                                        const void *unused)
 {
     QObject *arg;
+    UserDefAlternate *tmp;

-    UserDefAlternate *tmp = g_malloc0(sizeof(UserDefAlternate));
+    tmp = g_new0(UserDefAlternate, 1);
     tmp->type = USER_DEF_ALTERNATE_KIND_I;
     tmp->u.i = 42;

@@ -438,6 +439,19 @@  static void test_visitor_out_alternate(TestOutputVisitorData *data,

     qapi_free_UserDefAlternate(tmp);
     qobject_decref(arg);
+
+    tmp = g_new0(UserDefAlternate, 1);
+    tmp->type = USER_DEF_ALTERNATE_KIND_S;
+    tmp->u.s = g_strdup("hello");
+
+    visit_type_UserDefAlternate(data->ov, &tmp, NULL, &error_abort);
+    arg = qmp_output_get_qobject(data->qov);
+
+    g_assert(qobject_type(arg) == QTYPE_QSTRING);
+    g_assert_cmpstr(qstring_get_str(qobject_to_qstring(arg)), ==, "hello");
+
+    qapi_free_UserDefAlternate(tmp);
+    qobject_decref(arg);
 }

 static void test_visitor_out_empty(TestOutputVisitorData *data,