[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 04/13] tests/qapi-schema: Correct two 'if' conditionals
From: |
Markus Armbruster |
Subject: |
[PULL 04/13] tests/qapi-schema: Correct two 'if' conditionals |
Date: |
Fri, 3 Sep 2021 21:32:00 +0200 |
A definition's conditional should imply the conditionals of types it
uses. If it doesn't, some configurations won't compile.
Example (from tests/qapi-schema/qapi-schema-test.json):
{ 'union': 'TestIfUnion', 'data':
{ 'foo': 'TestStruct',
'bar': { 'type': 'str', 'if': 'TEST_IF_UNION_BAR'} },
'if': { 'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT'] } }
{ 'command': 'test-if-union-cmd',
'data': { 'union-cmd-arg': 'TestIfUnion' },
'if': 'TEST_IF_UNION' }
generates
#if (defined(TEST_IF_UNION)) && (defined(TEST_IF_STRUCT))
typedef struct TestIfUnion TestIfUnion;
#endif /* (defined(TEST_IF_UNION)) && (defined(TEST_IF_STRUCT)) */
and
#if defined(TEST_IF_UNION)
void qmp_test_if_union_cmd(TestIfUnion *union_cmd_arg, Error **errp);
void qmp_marshal_test_if_union_cmd(QDict *args, QObject **ret, Error
**errp);
#endif /* defined(TEST_IF_UNION) */
which doesn't compile when !defined(TEST_IF_STRUCT).
Messed up in f8c4fdd6ae "tests/qapi: Cover commands with 'if' and
union / alternate 'data'", v4.0.0. Harmless, as we don't actually use
this configuration. Correct it anyway, along with another instance.
This loses coverage for 'not'. The next commit will bring it back.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20210831123809.1107782-4-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/qapi-schema/qapi-schema-test.json | 5 ++---
tests/qapi-schema/qapi-schema-test.out | 8 ++++----
2 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/tests/qapi-schema/qapi-schema-test.json
b/tests/qapi-schema/qapi-schema-test.json
index fe028145e4..e20f76d84c 100644
--- a/tests/qapi-schema/qapi-schema-test.json
+++ b/tests/qapi-schema/qapi-schema-test.json
@@ -236,7 +236,7 @@
{ 'command': 'test-if-union-cmd',
'data': { 'union-cmd-arg': 'TestIfUnion' },
- 'if': 'TEST_IF_UNION' }
+ 'if': { 'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT'] } }
{ 'alternate': 'TestIfAlternate', 'data':
{ 'foo': 'int',
@@ -245,8 +245,7 @@
{ 'command': 'test-if-alternate-cmd',
'data': { 'alt-cmd-arg': 'TestIfAlternate' },
- 'if': { 'all': ['TEST_IF_ALT',
- {'not': 'TEST_IF_NOT_ALT'}] } }
+ 'if': { 'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT'] } }
{ 'command': 'test-if-cmd',
'data': {
diff --git a/tests/qapi-schema/qapi-schema-test.out
b/tests/qapi-schema/qapi-schema-test.out
index 3d0c6a8f28..517d802636 100644
--- a/tests/qapi-schema/qapi-schema-test.out
+++ b/tests/qapi-schema/qapi-schema-test.out
@@ -321,10 +321,10 @@ object TestIfUnion
if OrderedDict([('all', ['TEST_IF_UNION', 'TEST_IF_STRUCT'])])
object q_obj_test-if-union-cmd-arg
member union-cmd-arg: TestIfUnion optional=False
- if TEST_IF_UNION
+ if OrderedDict([('all', ['TEST_IF_UNION', 'TEST_IF_STRUCT'])])
command test-if-union-cmd q_obj_test-if-union-cmd-arg -> None
gen=True success_response=True boxed=False oob=False preconfig=False
- if TEST_IF_UNION
+ if OrderedDict([('all', ['TEST_IF_UNION', 'TEST_IF_STRUCT'])])
alternate TestIfAlternate
tag type
case foo: int
@@ -333,10 +333,10 @@ alternate TestIfAlternate
if OrderedDict([('all', ['TEST_IF_ALT', 'TEST_IF_STRUCT'])])
object q_obj_test-if-alternate-cmd-arg
member alt-cmd-arg: TestIfAlternate optional=False
- if OrderedDict([('all', ['TEST_IF_ALT', OrderedDict([('not',
'TEST_IF_NOT_ALT')])])])
+ if OrderedDict([('all', ['TEST_IF_ALT', 'TEST_IF_STRUCT'])])
command test-if-alternate-cmd q_obj_test-if-alternate-cmd-arg -> None
gen=True success_response=True boxed=False oob=False preconfig=False
- if OrderedDict([('all', ['TEST_IF_ALT', OrderedDict([('not',
'TEST_IF_NOT_ALT')])])])
+ if OrderedDict([('all', ['TEST_IF_ALT', 'TEST_IF_STRUCT'])])
object q_obj_test-if-cmd-arg
member foo: TestIfStruct optional=False
member bar: TestIfEnum optional=False
--
2.31.1
- [PULL 00/13] QAPI patches patches for 2021-09-03, Markus Armbruster, 2021/09/03
- [PULL 01/13] qapi: Set boolean value correctly in examples, Markus Armbruster, 2021/09/03
- [PULL 06/13] qapi: Fix C code generation for 'if', Markus Armbruster, 2021/09/03
- [PULL 10/13] qapi: Use re.fullmatch() where appropriate, Markus Armbruster, 2021/09/03
- [PULL 04/13] tests/qapi-schema: Correct two 'if' conditionals,
Markus Armbruster <=
- [PULL 03/13] qapi: Simplify how QAPISchemaIfCond represents "no condition", Markus Armbruster, 2021/09/03
- [PULL 05/13] tests/qapi-schema: Demonstrate broken C code for 'if', Markus Armbruster, 2021/09/03
- [PULL 08/13] qapi: Avoid redundant parens in code generated for conditionals, Markus Armbruster, 2021/09/03
- [PULL 12/13] qapi: Tweak error messages for missing / conflicting meta-type, Markus Armbruster, 2021/09/03
- [PULL 11/13] tests/qapi-schema: Hide OrderedDict in test output, Markus Armbruster, 2021/09/03
- [PULL 02/13] qapi: Simplify QAPISchemaIfCond's interface for generating C, Markus Armbruster, 2021/09/03
- [PULL 13/13] qapi: Tweak error messages for unknown / conflicting 'if' keys, Markus Armbruster, 2021/09/03
- [PULL 07/13] qapi: Factor common recursion out of cgen_ifcond(), docgen_ifcond(), Markus Armbruster, 2021/09/03
- [PULL 09/13] qapi: Use "not COND" instead of "!COND" for generated documentation, Markus Armbruster, 2021/09/03
- Re: [PULL 00/13] QAPI patches patches for 2021-09-03, Peter Maydell, 2021/09/05