From patchwork Tue Mar 20 10:22:49 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laszlo Ersek X-Patchwork-Id: 147855 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 6977CB6EE6 for ; Wed, 21 Mar 2012 10:03:18 +1100 (EST) Received: from localhost ([::1]:54467 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SA85E-0005Pn-8E for incoming@patchwork.ozlabs.org; Tue, 20 Mar 2012 19:03:16 -0400 Received: from eggs.gnu.org ([208.118.235.92]:36849) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S9wCW-0006ku-N8 for qemu-devel@nongnu.org; Tue, 20 Mar 2012 06:22:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S9wCU-00032P-L2 for qemu-devel@nongnu.org; Tue, 20 Mar 2012 06:22:00 -0400 Received: from mx1.redhat.com ([209.132.183.28]:8605) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S9wCU-00031x-Dd for qemu-devel@nongnu.org; Tue, 20 Mar 2012 06:21:58 -0400 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q2KALtxZ012122 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 20 Mar 2012 06:21:55 -0400 Received: from lacos-laptop.usersys.redhat.com (vpn1-4-246.ams2.redhat.com [10.36.4.246]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q2KALnFU004642; Tue, 20 Mar 2012 06:21:53 -0400 From: Laszlo Ersek To: qemu-devel@nongnu.org, pbonzini@redhat.com, lcapitulino@redhat.com, jcody@redhat.com, aliguori@us.ibm.com, mdroth@linux.vnet.ibm.com, lersek@redhat.com Date: Tue, 20 Mar 2012 11:22:49 +0100 Message-Id: <1332238969-5770-3-git-send-email-lersek@redhat.com> In-Reply-To: <20120320004332.GA25518@illuin> References: <20120320004332.GA25518@illuin> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 209.132.183.28 X-Mailman-Approved-At: Tue, 20 Mar 2012 19:02:54 -0400 Subject: [Qemu-devel] [PATCH v2 2/2] qapi: add struct-errors test case to test-qmp-output-visitor X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Paolo Bonzini This test case verifies that invalid native enums are caught, and causes qapi to tear down the QObject tree under construction, exercising the previous patch. Signed-off-by: Paolo Bonzini Signed-off-by: Laszlo Ersek --- qapi-schema-test.json | 2 +- test-qmp-output-visitor.c | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletions(-) diff --git a/qapi-schema-test.json b/qapi-schema-test.json index 8c7f9f7..9eae350 100644 --- a/qapi-schema-test.json +++ b/qapi-schema-test.json @@ -8,7 +8,7 @@ # for testing nested structs { 'type': 'UserDefOne', - 'data': { 'integer': 'int', 'string': 'str' } } + 'data': { 'integer': 'int', 'string': 'str', '*enum1': 'EnumOne' } } { 'type': 'UserDefTwo', 'data': { 'string': 'str', diff --git a/test-qmp-output-visitor.c b/test-qmp-output-visitor.c index 4d6c4d4..24a6359 100644 --- a/test-qmp-output-visitor.c +++ b/test-qmp-output-visitor.c @@ -274,6 +274,24 @@ static void test_visitor_out_struct_nested(TestOutputVisitorData *data, qapi_free_UserDefNested(ud2); } +static void test_visitor_out_struct_errors(TestOutputVisitorData *data, + const void *unused) +{ + EnumOne bad_values[] = { ENUM_ONE_MAX, -1 }; + UserDefOne u = { 0 }, *pu = &u; + Error *errp; + int i; + + for (i = 0; i < ARRAY_SIZE(bad_values) ; i++) { + errp = NULL; + u.has_enum1 = true; + u.enum1 = bad_values[i]; + visit_type_UserDefOne(data->ov, &pu, "unused", &errp); + g_assert(error_is_set(&errp) == true); + error_free(errp); + } +} + typedef struct TestStructList { TestStruct *value; @@ -444,6 +462,8 @@ int main(int argc, char **argv) &out_visitor_data, test_visitor_out_struct); output_visitor_test_add("/visitor/output/struct-nested", &out_visitor_data, test_visitor_out_struct_nested); + output_visitor_test_add("/visitor/output/struct-errors", + &out_visitor_data, test_visitor_out_struct_errors); output_visitor_test_add("/visitor/output/list", &out_visitor_data, test_visitor_out_list); output_visitor_test_add("/visitor/output/list-qapi-free",