[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 21/37] tests/qapi-schema: Demonstrate misleading optional tag erro
From: |
Markus Armbruster |
Subject: |
[PULL 21/37] tests/qapi-schema: Demonstrate misleading optional tag error |
Date: |
Tue, 24 Sep 2019 14:33:18 +0200 |
Test flat-union-optional-discriminator declares its union tag as
'*switch': 'Enum', and points to it with 'discriminator': '*switch'.
This gets rejected as "discriminator of flat union 'MyUnion' uses
invalid name '*switch'". Correct; member 'discriminator' doesn't
accept a '*' prefix.
However, this merely tests name validity checking, which we already
cover elsewhere. More interesting is testing the valid name 'switch'.
This reports "discriminator 'switch' is not a member of base struct
'Base'", which is misleading.
Copy the existing 'discriminator': '*switch' test to
flat-union-discriminator-bad-name, and rewrite its comment. Change
flat-union-optional-discriminator to test 'discriminator': 'switch',
and mark it FIXME.
Signed-off-by: Markus Armbruster <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
---
tests/Makefile.include | 1 +
.../qapi-schema/flat-union-discriminator-bad-name.err | 1 +
.../flat-union-discriminator-bad-name.exit | 1 +
.../flat-union-discriminator-bad-name.json | 11 +++++++++++
.../qapi-schema/flat-union-discriminator-bad-name.out | 0
.../qapi-schema/flat-union-optional-discriminator.err | 2 +-
.../flat-union-optional-discriminator.json | 3 ++-
7 files changed, 17 insertions(+), 2 deletions(-)
create mode 100644 tests/qapi-schema/flat-union-discriminator-bad-name.err
create mode 100644 tests/qapi-schema/flat-union-discriminator-bad-name.exit
create mode 100644 tests/qapi-schema/flat-union-discriminator-bad-name.json
create mode 100644 tests/qapi-schema/flat-union-discriminator-bad-name.out
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 0c862dbc42..7553616069 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -388,6 +388,7 @@ qapi-schema += flat-union-bad-discriminator.json
qapi-schema += flat-union-base-any.json
qapi-schema += flat-union-base-union.json
qapi-schema += flat-union-clash-member.json
+qapi-schema += flat-union-discriminator-bad-name.json
qapi-schema += flat-union-empty.json
qapi-schema += flat-union-inline.json
qapi-schema += flat-union-inline-invalid-dict.json
diff --git a/tests/qapi-schema/flat-union-discriminator-bad-name.err
b/tests/qapi-schema/flat-union-discriminator-bad-name.err
new file mode 100644
index 0000000000..7238d126ca
--- /dev/null
+++ b/tests/qapi-schema/flat-union-discriminator-bad-name.err
@@ -0,0 +1 @@
+tests/qapi-schema/flat-union-discriminator-bad-name.json:7: Discriminator of
flat union 'MyUnion' does not allow optional name '*switch'
diff --git a/tests/qapi-schema/flat-union-discriminator-bad-name.exit
b/tests/qapi-schema/flat-union-discriminator-bad-name.exit
new file mode 100644
index 0000000000..d00491fd7e
--- /dev/null
+++ b/tests/qapi-schema/flat-union-discriminator-bad-name.exit
@@ -0,0 +1 @@
+1
diff --git a/tests/qapi-schema/flat-union-discriminator-bad-name.json
b/tests/qapi-schema/flat-union-discriminator-bad-name.json
new file mode 100644
index 0000000000..66376084fc
--- /dev/null
+++ b/tests/qapi-schema/flat-union-discriminator-bad-name.json
@@ -0,0 +1,11 @@
+# discriminator '*switch' isn't a member of base, 'switch' is
+# reports "does not allow optional name", which is good enough
+{ '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-discriminator-bad-name.out
b/tests/qapi-schema/flat-union-discriminator-bad-name.out
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/qapi-schema/flat-union-optional-discriminator.err
b/tests/qapi-schema/flat-union-optional-discriminator.err
index aaabedb3bd..8b4a4ba847 100644
--- a/tests/qapi-schema/flat-union-optional-discriminator.err
+++ b/tests/qapi-schema/flat-union-optional-discriminator.err
@@ -1 +1 @@
-tests/qapi-schema/flat-union-optional-discriminator.json:6: Discriminator of
flat union 'MyUnion' does not allow optional name '*switch'
+tests/qapi-schema/flat-union-optional-discriminator.json:7: Discriminator
'switch' is not a member of base struct 'Base'
diff --git a/tests/qapi-schema/flat-union-optional-discriminator.json
b/tests/qapi-schema/flat-union-optional-discriminator.json
index 08a8f7ef8b..143ab23a0d 100644
--- a/tests/qapi-schema/flat-union-optional-discriminator.json
+++ b/tests/qapi-schema/flat-union-optional-discriminator.json
@@ -1,10 +1,11 @@
# we require the discriminator to be non-optional
+# FIXME reports "discriminator 'switch' is not a member of base struct 'Base'"
{ 'enum': 'Enum', 'data': [ 'one', 'two' ] }
{ 'struct': 'Base',
'data': { '*switch': 'Enum' } }
{ 'struct': 'Branch', 'data': { 'name': 'str' } }
{ 'union': 'MyUnion',
'base': 'Base',
- 'discriminator': '*switch',
+ 'discriminator': 'switch',
'data': { 'one': 'Branch',
'two': 'Branch' } }
--
2.21.0
- [PULL 26/37] qapi: Improve reporting of lexical errors, (continued)
- [PULL 26/37] qapi: Improve reporting of lexical errors, Markus Armbruster, 2019/09/24
- [PULL 10/37] qapi: Permit 'boxed' with empty type, Markus Armbruster, 2019/09/24
- [PULL 37/37] qapi: Assert .visit() and .check_clash() run only after .check(), Markus Armbruster, 2019/09/24
- [PULL 22/37] tests/qapi-schema: Demonstrate broken discriminator errors, Markus Armbruster, 2019/09/24
- [PULL 03/37] scripts/git.orderfile: Match QAPI schema more precisely, Markus Armbruster, 2019/09/24
- [PULL 12/37] qapi: Permit omitting all flat union branches, Markus Armbruster, 2019/09/24
- [PULL 15/37] docs/devel/qapi-code-gen: Rewrite compatibility considerations, Markus Armbruster, 2019/09/24
- [PULL 20/37] tests/qapi-schema: Delete two redundant tests, Markus Armbruster, 2019/09/24
- [PULL 24/37] tests/qapi-schema: Demonstrate suboptimal lexical errors, Markus Armbruster, 2019/09/24
- [PULL 09/37] qapi: Drop support for escape sequences other than \\, Markus Armbruster, 2019/09/24
- [PULL 21/37] tests/qapi-schema: Demonstrate misleading optional tag error,
Markus Armbruster <=
- [PULL 16/37] docs/devel/qapi-code-gen: Rewrite introduction to schema, Markus Armbruster, 2019/09/24
- [PULL 18/37] qapi: Tweak code to match docs/devel/qapi-code-gen.txt, Markus Armbruster, 2019/09/24
- [PULL 25/37] qapi: Use quotes more consistently in frontend error messages, Markus Armbruster, 2019/09/24
- [PULL 17/37] docs/devel/qapi-code-gen: Improve QAPI schema language doc, Markus Armbruster, 2019/09/24
- [PULL 31/37] qapi: Normalize 'if' in check_exprs(), like other sugar, Markus Armbruster, 2019/09/24
- [PULL 28/37] qapi: Fix broken discriminator error messages, Markus Armbruster, 2019/09/24
- [PULL 08/37] qapi: Restrict strings to printable ASCII, Markus Armbruster, 2019/09/24
- [PULL 36/37] qapi: Fix excessive QAPISchemaEntity.check() recursion, Markus Armbruster, 2019/09/24
- [PULL 30/37] qapi: Fix missing 'if' checks in struct, union, alternate 'data', Markus Armbruster, 2019/09/24
- [PULL 23/37] tests/qapi-schema: Demonstrate insufficient 'if' checking, Markus Armbruster, 2019/09/24