From nobody Thu Oct 30 15:33:04 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1525886354101646.94109797626; Wed, 9 May 2018 10:19:14 -0700 (PDT) Received: from localhost ([::1]:57867 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGSkD-0005fa-36 for importer@patchew.org; Wed, 09 May 2018 13:19:13 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59700) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGSNW-0003Wy-Ha for qemu-devel@nongnu.org; Wed, 09 May 2018 12:55:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fGSNT-0006cQ-PB for qemu-devel@nongnu.org; Wed, 09 May 2018 12:55:46 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:46316 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fGSNP-0006Vv-Vo; Wed, 09 May 2018 12:55:40 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D5F82EBFE5; Wed, 9 May 2018 16:55:38 +0000 (UTC) Received: from localhost (unknown [10.40.205.23]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5D12710B2B4F; Wed, 9 May 2018 16:55:38 +0000 (UTC) From: Max Reitz To: qemu-block@nongnu.org Date: Wed, 9 May 2018 18:55:20 +0200 Message-Id: <20180509165530.29561-4-mreitz@redhat.com> In-Reply-To: <20180509165530.29561-1-mreitz@redhat.com> References: <20180509165530.29561-1-mreitz@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Wed, 09 May 2018 16:55:38 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Wed, 09 May 2018 16:55:38 +0000 (UTC) for IP:'10.11.54.3' DOMAIN:'int-mx03.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'mreitz@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.187.233.73 Subject: [Qemu-devel] [PATCH 03/13] tests: Add QAPI optional discriminator tests X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , qemu-devel@nongnu.org, Markus Armbruster , Michael Roth , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" There already is an optional discriminator test, although it also noted the discriminator name itself as optional. Changing that, and adding a default-variant field, makes that test pass instead of failing. Besides this one, a number of tests adding various error cases are added. Signed-off-by: Max Reitz --- tests/Makefile.include | 3 +++ ...flat-union-optional-discriminator-invalid-default.json | 12 ++++++++++++ .../flat-union-optional-discriminator-no-default.json | 11 +++++++++++ tests/qapi-schema/flat-union-optional-discriminator.json | 4 ++-- .../flat-union-superfluous-default-variant.json | 11 +++++++++++ .../flat-union-optional-discriminator-invalid-default.err | 1 + ...flat-union-optional-discriminator-invalid-default.exit | 1 + .../flat-union-optional-discriminator-invalid-default.out | 0 .../flat-union-optional-discriminator-no-default.err | 1 + .../flat-union-optional-discriminator-no-default.exit | 1 + .../flat-union-optional-discriminator-no-default.out | 0 tests/qapi-schema/flat-union-optional-discriminator.err | 1 - tests/qapi-schema/flat-union-optional-discriminator.exit | 2 +- tests/qapi-schema/flat-union-optional-discriminator.out | 15 +++++++++++= ++++ .../flat-union-superfluous-default-variant.err | 1 + .../flat-union-superfluous-default-variant.exit | 1 + .../flat-union-superfluous-default-variant.out | 0 17 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 tests/qapi-schema/flat-union-optional-discriminator-inv= alid-default.json create mode 100644 tests/qapi-schema/flat-union-optional-discriminator-no-= default.json create mode 100644 tests/qapi-schema/flat-union-superfluous-default-varian= t.json create mode 100644 tests/qapi-schema/flat-union-optional-discriminator-inv= alid-default.err create mode 100644 tests/qapi-schema/flat-union-optional-discriminator-inv= alid-default.exit create mode 100644 tests/qapi-schema/flat-union-optional-discriminator-inv= alid-default.out create mode 100644 tests/qapi-schema/flat-union-optional-discriminator-no-= default.err create mode 100644 tests/qapi-schema/flat-union-optional-discriminator-no-= default.exit create mode 100644 tests/qapi-schema/flat-union-optional-discriminator-no-= default.out create mode 100644 tests/qapi-schema/flat-union-superfluous-default-varian= t.err create mode 100644 tests/qapi-schema/flat-union-superfluous-default-varian= t.exit create mode 100644 tests/qapi-schema/flat-union-superfluous-default-varian= t.out diff --git a/tests/Makefile.include b/tests/Makefile.include index 3b9a5e31a2..d01df12b09 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -500,7 +500,10 @@ qapi-schema +=3D flat-union-invalid-branch-key.json qapi-schema +=3D flat-union-invalid-discriminator.json qapi-schema +=3D flat-union-no-base.json qapi-schema +=3D flat-union-optional-discriminator.json +qapi-schema +=3D flat-union-optional-discriminator-no-default.json +qapi-schema +=3D flat-union-optional-discriminator-invalid-default.json qapi-schema +=3D flat-union-string-discriminator.json +qapi-schema +=3D flat-union-superfluous-default-variant.json qapi-schema +=3D funny-char.json qapi-schema +=3D ident-with-escape.json qapi-schema +=3D include-before-err.json diff --git a/tests/qapi-schema/flat-union-optional-discriminator-invalid-de= fault.json b/tests/qapi-schema/flat-union-optional-discriminator-invalid-de= fault.json new file mode 100644 index 0000000000..015a47ba52 --- /dev/null +++ b/tests/qapi-schema/flat-union-optional-discriminator-invalid-default.j= son @@ -0,0 +1,12 @@ +# default-variant must refer to an actual value of the discriminator's +# enum +{ 'enum': 'Enum', 'data': [ 'one', 'two' ] } +{ 'struct': 'Base', + 'data': { '*switch': 'Enum' } } +{ 'struct': 'Branch', 'data': { 'name': 'str' } } +{ 'union': 'MyUnion', + 'base': 'Base', + 'discriminator': 'switch', + 'default-variant': 'three', + 'data': { 'one': 'Branch', + 'two': 'Branch' } } diff --git a/tests/qapi-schema/flat-union-optional-discriminator-no-default= .json b/tests/qapi-schema/flat-union-optional-discriminator-no-default.json new file mode 100644 index 0000000000..0d612f5a62 --- /dev/null +++ b/tests/qapi-schema/flat-union-optional-discriminator-no-default.json @@ -0,0 +1,11 @@ +# Using an optional discriminator requires specifying a default +# variant +{ 'enum': 'Enum', 'data': [ 'one', 'two' ] } +{ 'struct': 'Base', + 'data': { '*switch': 'Enum' } } +{ 'struct': 'Branch', 'data': { 'name': 'str' } } +{ 'union': 'MyUnion', + 'base': 'Base', + 'discriminator': 'switch', + 'data': { 'one': 'Branch', + 'two': 'Branch' } } diff --git a/tests/qapi-schema/flat-union-optional-discriminator.json b/tes= ts/qapi-schema/flat-union-optional-discriminator.json index 08a8f7ef8b..68e87083a1 100644 --- a/tests/qapi-schema/flat-union-optional-discriminator.json +++ b/tests/qapi-schema/flat-union-optional-discriminator.json @@ -1,10 +1,10 @@ -# we require the discriminator to be non-optional { 'enum': 'Enum', 'data': [ 'one', 'two' ] } { 'struct': 'Base', 'data': { '*switch': 'Enum' } } { 'struct': 'Branch', 'data': { 'name': 'str' } } { 'union': 'MyUnion', 'base': 'Base', - 'discriminator': '*switch', + 'discriminator': 'switch', + 'default-variant': 'one', 'data': { 'one': 'Branch', 'two': 'Branch' } } diff --git a/tests/qapi-schema/flat-union-superfluous-default-variant.json = b/tests/qapi-schema/flat-union-superfluous-default-variant.json new file mode 100644 index 0000000000..8558165868 --- /dev/null +++ b/tests/qapi-schema/flat-union-superfluous-default-variant.json @@ -0,0 +1,11 @@ +# default-variant only makes sense with an optional discriminator +{ 'enum': 'Enum', 'data': [ 'one', 'two' ] } +{ 'struct': 'Base', + 'data': { 'switch': 'Enum' } } +{ 'struct': 'Branch', 'data': { 'name': 'str' } } +{ 'union': 'MyUnion', + 'base': 'Base', + 'discriminator': 'switch', + 'default-variant': 'one', + 'data': { 'one': 'Branch', + 'two': 'Branch' } } diff --git a/tests/qapi-schema/flat-union-optional-discriminator-invalid-de= fault.err b/tests/qapi-schema/flat-union-optional-discriminator-invalid-def= ault.err new file mode 100644 index 0000000000..b6bd3423d6 --- /dev/null +++ b/tests/qapi-schema/flat-union-optional-discriminator-invalid-default.e= rr @@ -0,0 +1 @@ +tests/qapi-schema/flat-union-optional-discriminator-invalid-default.json:7= : Default variant 'three' of flat union 'MyUnion' is not part of 'Enum' diff --git a/tests/qapi-schema/flat-union-optional-discriminator-invalid-de= fault.exit b/tests/qapi-schema/flat-union-optional-discriminator-invalid-de= fault.exit new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/tests/qapi-schema/flat-union-optional-discriminator-invalid-default.e= xit @@ -0,0 +1 @@ +1 diff --git a/tests/qapi-schema/flat-union-optional-discriminator-invalid-de= fault.out b/tests/qapi-schema/flat-union-optional-discriminator-invalid-def= ault.out new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/qapi-schema/flat-union-optional-discriminator-no-default= .err b/tests/qapi-schema/flat-union-optional-discriminator-no-default.err new file mode 100644 index 0000000000..1342efd9e8 --- /dev/null +++ b/tests/qapi-schema/flat-union-optional-discriminator-no-default.err @@ -0,0 +1 @@ +tests/qapi-schema/flat-union-optional-discriminator-no-default.json:7: Def= ault variant must be specified for optional discriminator 'switch' diff --git a/tests/qapi-schema/flat-union-optional-discriminator-no-default= .exit b/tests/qapi-schema/flat-union-optional-discriminator-no-default.exit new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/tests/qapi-schema/flat-union-optional-discriminator-no-default.exit @@ -0,0 +1 @@ +1 diff --git a/tests/qapi-schema/flat-union-optional-discriminator-no-default= .out b/tests/qapi-schema/flat-union-optional-discriminator-no-default.out new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/qapi-schema/flat-union-optional-discriminator.err b/test= s/qapi-schema/flat-union-optional-discriminator.err index aaabedb3bd..e69de29bb2 100644 --- a/tests/qapi-schema/flat-union-optional-discriminator.err +++ b/tests/qapi-schema/flat-union-optional-discriminator.err @@ -1 +0,0 @@ -tests/qapi-schema/flat-union-optional-discriminator.json:6: Discriminator = of flat union 'MyUnion' does not allow optional name '*switch' diff --git a/tests/qapi-schema/flat-union-optional-discriminator.exit b/tes= ts/qapi-schema/flat-union-optional-discriminator.exit index d00491fd7e..573541ac97 100644 --- a/tests/qapi-schema/flat-union-optional-discriminator.exit +++ b/tests/qapi-schema/flat-union-optional-discriminator.exit @@ -1 +1 @@ -1 +0 diff --git a/tests/qapi-schema/flat-union-optional-discriminator.out b/test= s/qapi-schema/flat-union-optional-discriminator.out index e69de29bb2..d3a72f63c2 100644 --- a/tests/qapi-schema/flat-union-optional-discriminator.out +++ b/tests/qapi-schema/flat-union-optional-discriminator.out @@ -0,0 +1,15 @@ +object q_empty +enum QType ['none', 'qnull', 'qnum', 'qstring', 'qdict', 'qlist', 'qbool'] + prefix QTYPE +module flat-union-optional-discriminator.json +enum Enum ['one', 'two'] +object Base + member switch: Enum optional=3DTrue +object Branch + member name: str optional=3DFalse +object MyUnion + base Base + tag switch + default variant: one + case one: Branch + case two: Branch diff --git a/tests/qapi-schema/flat-union-superfluous-default-variant.err b= /tests/qapi-schema/flat-union-superfluous-default-variant.err new file mode 100644 index 0000000000..5230bbf645 --- /dev/null +++ b/tests/qapi-schema/flat-union-superfluous-default-variant.err @@ -0,0 +1 @@ +tests/qapi-schema/flat-union-superfluous-default-variant.json:6: Must not = specify a default variant for non-optional discriminator 'switch' diff --git a/tests/qapi-schema/flat-union-superfluous-default-variant.exit = b/tests/qapi-schema/flat-union-superfluous-default-variant.exit new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/tests/qapi-schema/flat-union-superfluous-default-variant.exit @@ -0,0 +1 @@ +1 diff --git a/tests/qapi-schema/flat-union-superfluous-default-variant.out b= /tests/qapi-schema/flat-union-superfluous-default-variant.out new file mode 100644 index 0000000000..e69de29bb2 --=20 2.14.3