On 09/29/2015 07:38 AM, Markus Armbruster wrote: > Eric Blake <ebl...@redhat.com> writes: > >> Add some testsuite exposure for use of a 'number' as part of >> an alternate. The current state of the tree has a few bugs >> exposed by this: our input parser depends on the ordering of >> how the qapi schema declared the alternate, and the parser >> does not accept integers for a 'number' in an alternate even >> though it does for numbers outside of an alternate. >> >> Mixing 'int' and 'number' in the same alternate is unusual, >> since both are supplied by json-numbers, but there does not >> seem to be a technical reason to forbid it given that our >> json lexer distinguishes between json-numbers that can be >> represented as an int vs. those that cannot. >> >> Improve the existing test_visitor_in_alternate() to match the >> style of the new test_visitor_in_alternate_number(), and to >> ensure full coverage of all possible qtype parsing. >> >> Signed-off-by: Eric Blake <ebl...@redhat.com> >>
>> +++ b/tests/test-qmp-input-visitor.c >> @@ -371,12 +371,133 @@ static void >> test_visitor_in_alternate(TestInputVisitorData *data, >> UserDefAlternate *tmp; >> >> v = visitor_input_test_init(data, "42"); >> - >> - visit_type_UserDefAlternate(v, &tmp, NULL, &err); >> - g_assert(err == NULL); >> + visit_type_UserDefAlternate(v, &tmp, NULL, &error_abort); >> g_assert_cmpint(tmp->kind, ==, USER_DEF_ALTERNATE_KIND_I); >> g_assert_cmpint(tmp->i, ==, 42); >> qapi_free_UserDefAlternate(tmp); >> + visitor_input_teardown(data, NULL); > > Ugly in this test: visitor_input_test_init() is to be paired with > visitor_input_teardown(), but each test's last visitor_input_teardown() > can be omitted, because we also pass visitor_input_teardown to > g_test_add(). Not your patch's fault. Let's ignore it for now. In fact, I have another patch coming down the pipeline that moves visitor_input_teardown() into visitor_input_test_init() (teardown is idempotent. And while working on it, I noticed that we could consider doing something like: init(data, ...); func(blah, &data->err); g_assert(data->err); teardown(data); to let teardown() take care of err, instead of having to manually error_free(err); err = NULL; on each reset (particularly nice if visitor_input_test_init() invokes teardown() itself, for automatic reset semantics). -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature