[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 23/37] tests/qapi-schema: Demonstrate insufficient 'if' checking
From: |
Markus Armbruster |
Subject: |
[PULL 23/37] tests/qapi-schema: Demonstrate insufficient 'if' checking |
Date: |
Tue, 24 Sep 2019 14:33:20 +0200 |
Cover invalid 'if' in struct members, features, union and alternate
branches. Four out of four are broken. Mark FIXME.
Signed-off-by: Markus Armbruster <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
[Comment typo fixed]
---
tests/Makefile.include | 4 ++++
.../alternate-branch-if-invalid.err | 0
.../alternate-branch-if-invalid.exit | 1 +
.../alternate-branch-if-invalid.json | 4 ++++
.../alternate-branch-if-invalid.out | 16 +++++++++++++
tests/qapi-schema/features-if-invalid.err | 0
tests/qapi-schema/features-if-invalid.exit | 1 +
tests/qapi-schema/features-if-invalid.json | 5 ++++
tests/qapi-schema/features-if-invalid.out | 14 +++++++++++
.../qapi-schema/struct-member-if-invalid.err | 0
.../qapi-schema/struct-member-if-invalid.exit | 1 +
.../qapi-schema/struct-member-if-invalid.json | 4 ++++
.../qapi-schema/struct-member-if-invalid.out | 15 ++++++++++++
tests/qapi-schema/union-branch-if-invalid.err | 0
.../qapi-schema/union-branch-if-invalid.exit | 1 +
.../qapi-schema/union-branch-if-invalid.json | 7 ++++++
tests/qapi-schema/union-branch-if-invalid.out | 23 +++++++++++++++++++
17 files changed, 96 insertions(+)
create mode 100644 tests/qapi-schema/alternate-branch-if-invalid.err
create mode 100644 tests/qapi-schema/alternate-branch-if-invalid.exit
create mode 100644 tests/qapi-schema/alternate-branch-if-invalid.json
create mode 100644 tests/qapi-schema/alternate-branch-if-invalid.out
create mode 100644 tests/qapi-schema/features-if-invalid.err
create mode 100644 tests/qapi-schema/features-if-invalid.exit
create mode 100644 tests/qapi-schema/features-if-invalid.json
create mode 100644 tests/qapi-schema/features-if-invalid.out
create mode 100644 tests/qapi-schema/struct-member-if-invalid.err
create mode 100644 tests/qapi-schema/struct-member-if-invalid.exit
create mode 100644 tests/qapi-schema/struct-member-if-invalid.json
create mode 100644 tests/qapi-schema/struct-member-if-invalid.out
create mode 100644 tests/qapi-schema/union-branch-if-invalid.err
create mode 100644 tests/qapi-schema/union-branch-if-invalid.exit
create mode 100644 tests/qapi-schema/union-branch-if-invalid.json
create mode 100644 tests/qapi-schema/union-branch-if-invalid.out
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 7553616069..799fd4af02 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -294,6 +294,7 @@ check-qtest-generic-y += tests/test-hmp$(EXESUF)
qapi-schema += alternate-any.json
qapi-schema += alternate-array.json
qapi-schema += alternate-base.json
+qapi-schema += alternate-branch-if-invalid.json
qapi-schema += alternate-clash.json
qapi-schema += alternate-conflict-dict.json
qapi-schema += alternate-conflict-enum-bool.json
@@ -378,6 +379,7 @@ qapi-schema += event-member-invalid-dict.json
qapi-schema += event-nest-struct.json
qapi-schema += features-bad-type.json
qapi-schema += features-duplicate-name.json
+qapi-schema += features-if-invalid.json
qapi-schema += features-missing-name.json
qapi-schema += features-name-bad-type.json
qapi-schema += features-no-list.json
@@ -452,6 +454,7 @@ qapi-schema += string-code-point-127.json
qapi-schema += struct-base-clash-deep.json
qapi-schema += struct-base-clash.json
qapi-schema += struct-data-invalid.json
+qapi-schema += struct-member-if-invalid.json
qapi-schema += struct-member-invalid-dict.json
qapi-schema += struct-member-invalid.json
qapi-schema += trailing-comma-list.json
@@ -463,6 +466,7 @@ qapi-schema += unclosed-string.json
qapi-schema += union-base-empty.json
qapi-schema += union-base-no-discriminator.json
qapi-schema += union-branch-case.json
+qapi-schema += union-branch-if-invalid.json
qapi-schema += union-branch-invalid-dict.json
qapi-schema += union-clash-branches.json
qapi-schema += union-empty.json
diff --git a/tests/qapi-schema/alternate-branch-if-invalid.err
b/tests/qapi-schema/alternate-branch-if-invalid.err
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/qapi-schema/alternate-branch-if-invalid.exit
b/tests/qapi-schema/alternate-branch-if-invalid.exit
new file mode 100644
index 0000000000..573541ac97
--- /dev/null
+++ b/tests/qapi-schema/alternate-branch-if-invalid.exit
@@ -0,0 +1 @@
+0
diff --git a/tests/qapi-schema/alternate-branch-if-invalid.json
b/tests/qapi-schema/alternate-branch-if-invalid.json
new file mode 100644
index 0000000000..6497f53475
--- /dev/null
+++ b/tests/qapi-schema/alternate-branch-if-invalid.json
@@ -0,0 +1,4 @@
+# Cover alternative with invalid 'if'
+# FIXME not rejected, would generate '#if \n'
+{ 'alternate': 'Alt',
+ 'data': { 'branch': { 'type': 'int', 'if': ' ' } } }
diff --git a/tests/qapi-schema/alternate-branch-if-invalid.out
b/tests/qapi-schema/alternate-branch-if-invalid.out
new file mode 100644
index 0000000000..89305d7f21
--- /dev/null
+++ b/tests/qapi-schema/alternate-branch-if-invalid.out
@@ -0,0 +1,16 @@
+module None
+object q_empty
+enum QType
+ prefix QTYPE
+ member none
+ member qnull
+ member qnum
+ member qstring
+ member qdict
+ member qlist
+ member qbool
+module alternate-branch-if-invalid.json
+alternate Alt
+ tag type
+ case branch: int
+ if [' ']
diff --git a/tests/qapi-schema/features-if-invalid.err
b/tests/qapi-schema/features-if-invalid.err
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/qapi-schema/features-if-invalid.exit
b/tests/qapi-schema/features-if-invalid.exit
new file mode 100644
index 0000000000..573541ac97
--- /dev/null
+++ b/tests/qapi-schema/features-if-invalid.exit
@@ -0,0 +1 @@
+0
diff --git a/tests/qapi-schema/features-if-invalid.json
b/tests/qapi-schema/features-if-invalid.json
new file mode 100644
index 0000000000..7e4c1ad720
--- /dev/null
+++ b/tests/qapi-schema/features-if-invalid.json
@@ -0,0 +1,5 @@
+# Cover feature with invalid 'if'
+# FIXME not rejected, misinterpreted as unconditional
+{ 'struct': 'Stru',
+ 'data': {},
+ 'features': [{'name': 'f', 'if': null }] }
diff --git a/tests/qapi-schema/features-if-invalid.out
b/tests/qapi-schema/features-if-invalid.out
new file mode 100644
index 0000000000..9c2637baa3
--- /dev/null
+++ b/tests/qapi-schema/features-if-invalid.out
@@ -0,0 +1,14 @@
+module None
+object q_empty
+enum QType
+ prefix QTYPE
+ member none
+ member qnull
+ member qnum
+ member qstring
+ member qdict
+ member qlist
+ member qbool
+module features-if-invalid.json
+object Stru
+ feature f
diff --git a/tests/qapi-schema/struct-member-if-invalid.err
b/tests/qapi-schema/struct-member-if-invalid.err
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/qapi-schema/struct-member-if-invalid.exit
b/tests/qapi-schema/struct-member-if-invalid.exit
new file mode 100644
index 0000000000..573541ac97
--- /dev/null
+++ b/tests/qapi-schema/struct-member-if-invalid.exit
@@ -0,0 +1 @@
+0
diff --git a/tests/qapi-schema/struct-member-if-invalid.json
b/tests/qapi-schema/struct-member-if-invalid.json
new file mode 100644
index 0000000000..73987e04fc
--- /dev/null
+++ b/tests/qapi-schema/struct-member-if-invalid.json
@@ -0,0 +1,4 @@
+# Cover member with invalid 'if'
+# FIXME not rejected, would generate '#if True\n'
+{ 'struct': 'Stru',
+ 'data': { 'member': { 'type': 'int', 'if': true } } }
diff --git a/tests/qapi-schema/struct-member-if-invalid.out
b/tests/qapi-schema/struct-member-if-invalid.out
new file mode 100644
index 0000000000..8fbb97985c
--- /dev/null
+++ b/tests/qapi-schema/struct-member-if-invalid.out
@@ -0,0 +1,15 @@
+module None
+object q_empty
+enum QType
+ prefix QTYPE
+ member none
+ member qnull
+ member qnum
+ member qstring
+ member qdict
+ member qlist
+ member qbool
+module struct-member-if-invalid.json
+object Stru
+ member member: int optional=False
+ if [True]
diff --git a/tests/qapi-schema/union-branch-if-invalid.err
b/tests/qapi-schema/union-branch-if-invalid.err
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/qapi-schema/union-branch-if-invalid.exit
b/tests/qapi-schema/union-branch-if-invalid.exit
new file mode 100644
index 0000000000..573541ac97
--- /dev/null
+++ b/tests/qapi-schema/union-branch-if-invalid.exit
@@ -0,0 +1 @@
+0
diff --git a/tests/qapi-schema/union-branch-if-invalid.json
b/tests/qapi-schema/union-branch-if-invalid.json
new file mode 100644
index 0000000000..859b63b610
--- /dev/null
+++ b/tests/qapi-schema/union-branch-if-invalid.json
@@ -0,0 +1,7 @@
+# Cover branch with invalid 'if'
+# FIXME not rejected, would generate '#if \n'
+{ 'enum': 'Branches', 'data': ['branch1'] }
+{ 'struct': 'Stru', 'data': { 'member': 'str' } }
+{ 'union': 'Uni',
+ 'base': { 'tag': 'Branches' }, 'discriminator': 'tag',
+ 'data': { 'branch1': { 'type': 'Stru', 'if': [''] } } }
diff --git a/tests/qapi-schema/union-branch-if-invalid.out
b/tests/qapi-schema/union-branch-if-invalid.out
new file mode 100644
index 0000000000..2ed43218af
--- /dev/null
+++ b/tests/qapi-schema/union-branch-if-invalid.out
@@ -0,0 +1,23 @@
+module None
+object q_empty
+enum QType
+ prefix QTYPE
+ member none
+ member qnull
+ member qnum
+ member qstring
+ member qdict
+ member qlist
+ member qbool
+module union-branch-if-invalid.json
+enum Branches
+ member branch1
+object Stru
+ member member: str optional=False
+object q_obj_Uni-base
+ member tag: Branches optional=False
+object Uni
+ base q_obj_Uni-base
+ tag tag
+ case branch1: Stru
+ if ['']
--
2.21.0
- [PULL 21/37] tests/qapi-schema: Demonstrate misleading optional tag error, (continued)
- [PULL 21/37] tests/qapi-schema: Demonstrate misleading optional tag error, Markus Armbruster, 2019/09/24
- [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 <=
- [PULL 14/37] docs/devel/qapi-code-gen: Reorder sections for readability, Markus Armbruster, 2019/09/24
- Re: [PULL 00/37] QAPI patches for 2019-09-24, no-reply, 2019/09/24
- Re: [PULL 00/37] QAPI patches for 2019-09-24, no-reply, 2019/09/25
- Re: [PULL 00/37] QAPI patches for 2019-09-24, Peter Maydell, 2019/09/26