From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40814) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZvqWq-0002Xk-VZ for qemu-devel@nongnu.org; Mon, 09 Nov 2015 12:46:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZvqWm-0000MJ-7H for qemu-devel@nongnu.org; Mon, 09 Nov 2015 12:46:52 -0500 Received: from mx1.redhat.com ([209.132.183.28]:52605) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZvqWl-0000M4-Vm for qemu-devel@nongnu.org; Mon, 09 Nov 2015 12:46:48 -0500 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id A1B7F8FAA4 for ; Mon, 9 Nov 2015 17:46:47 +0000 (UTC) From: Markus Armbruster Date: Mon, 9 Nov 2015 18:46:36 +0100 Message-Id: <1447091204-10226-5-git-send-email-armbru@redhat.com> In-Reply-To: <1447091204-10226-1-git-send-email-armbru@redhat.com> References: <1447091204-10226-1-git-send-email-armbru@redhat.com> Subject: [Qemu-devel] [PULL 04/12] qapi: Share test_init code in test-qmp-input* List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org From: Eric Blake Rather than duplicate the body of two functions just to decide between qobject_from_jsonv() and qobject_from_json(), exploit the fact that qobject_from_jsonv() intentionally takes 'va_list *' instead of the more common 'va_list', and that qobject_from_json() just calls qobject_from_jsonv(,NULL). For each file, our two existing init functions then become thin wrappers around a new internal function, and future updates to initialization don't have to be duplicated. Suggested-by: Markus Armbruster Signed-off-by: Eric Blake Message-Id: <1446791754-23823-5-git-send-email-eblake@redhat.com> [Two old comment typos fixed] Signed-off-by: Markus Armbruster --- tests/test-qmp-input-strict.c | 48 ++++++++++++++++++++--------------------- tests/test-qmp-input-visitor.c | 49 ++++++++++++++++++++---------------------- 2 files changed, 46 insertions(+), 51 deletions(-) diff --git a/tests/test-qmp-input-strict.c b/tests/test-qmp-input-strict.c index b44184f..4837b31 100644 --- a/tests/test-qmp-input-strict.c +++ b/tests/test-qmp-input-strict.c @@ -40,9 +40,27 @@ static void validate_teardown(TestInputVisitorData *data, } } -/* This is provided instead of a test setup function so that the JSON - string used by the tests are kept in the test functions (and not - int main()) */ +/* The various test_init functions are provided instead of a test setup + function so that the JSON string used by the tests are kept in the test + functions (and not in main()). */ +static Visitor *validate_test_init_internal(TestInputVisitorData *data, + const char *json_string, + va_list *ap) +{ + Visitor *v; + + data->obj = qobject_from_jsonv(json_string, ap); + g_assert(data->obj); + + data->qiv = qmp_input_visitor_new_strict(data->obj); + g_assert(data->qiv); + + v = qmp_input_get_visitor(data->qiv); + g_assert(v); + + return v; +} + static GCC_FMT_ATTR(2, 3) Visitor *validate_test_init(TestInputVisitorData *data, const char *json_string, ...) @@ -51,17 +69,8 @@ Visitor *validate_test_init(TestInputVisitorData *data, va_list ap; va_start(ap, json_string); - data->obj = qobject_from_jsonv(json_string, &ap); + v = validate_test_init_internal(data, json_string, &ap); va_end(ap); - - g_assert(data->obj != NULL); - - data->qiv = qmp_input_visitor_new_strict(data->obj); - g_assert(data->qiv != NULL); - - v = qmp_input_get_visitor(data->qiv); - g_assert(v != NULL); - return v; } @@ -75,18 +84,7 @@ Visitor *validate_test_init(TestInputVisitorData *data, static Visitor *validate_test_init_raw(TestInputVisitorData *data, const char *json_string) { - Visitor *v; - - data->obj = qobject_from_json(json_string); - g_assert(data->obj != NULL); - - data->qiv = qmp_input_visitor_new_strict(data->obj); - g_assert(data->qiv != NULL); - - v = qmp_input_get_visitor(data->qiv); - g_assert(v != NULL); - - return v; + return validate_test_init_internal(data, json_string, NULL); } diff --git a/tests/test-qmp-input-visitor.c b/tests/test-qmp-input-visitor.c index 3f6bc4d..8856f31 100644 --- a/tests/test-qmp-input-visitor.c +++ b/tests/test-qmp-input-visitor.c @@ -36,9 +36,27 @@ static void visitor_input_teardown(TestInputVisitorData *data, } } -/* This is provided instead of a test setup function so that the JSON - string used by the tests are kept in the test functions (and not - int main()) */ +/* The various test_init functions are provided instead of a test setup + function so that the JSON string used by the tests are kept in the test + functions (and not in main()). */ +static Visitor *visitor_input_test_init_internal(TestInputVisitorData *data, + const char *json_string, + va_list *ap) +{ + Visitor *v; + + data->obj = qobject_from_jsonv(json_string, ap); + g_assert(data->obj); + + data->qiv = qmp_input_visitor_new(data->obj); + g_assert(data->qiv); + + v = qmp_input_get_visitor(data->qiv); + g_assert(v); + + return v; +} + static GCC_FMT_ATTR(2, 3) Visitor *visitor_input_test_init(TestInputVisitorData *data, const char *json_string, ...) @@ -47,17 +65,8 @@ Visitor *visitor_input_test_init(TestInputVisitorData *data, va_list ap; va_start(ap, json_string); - data->obj = qobject_from_jsonv(json_string, &ap); + v = visitor_input_test_init_internal(data, json_string, &ap); va_end(ap); - - g_assert(data->obj != NULL); - - data->qiv = qmp_input_visitor_new(data->obj); - g_assert(data->qiv != NULL); - - v = qmp_input_get_visitor(data->qiv); - g_assert(v != NULL); - return v; } @@ -71,19 +80,7 @@ Visitor *visitor_input_test_init(TestInputVisitorData *data, static Visitor *visitor_input_test_init_raw(TestInputVisitorData *data, const char *json_string) { - Visitor *v; - - data->obj = qobject_from_json(json_string); - - g_assert(data->obj != NULL); - - data->qiv = qmp_input_visitor_new(data->obj); - g_assert(data->qiv != NULL); - - v = qmp_input_get_visitor(data->qiv); - g_assert(v != NULL); - - return v; + return visitor_input_test_init_internal(data, json_string, NULL); } static void test_visitor_in_int(TestInputVisitorData *data, -- 2.4.3