qemu/tests/qapi-schema
Eric Blake cf3935907b qapi: Better error messages for bad enums
The previous commit demonstrated that the generator had several
flaws with less-than-perfect enums:
- an enum that listed the same string twice (or two variant
strings that map to the same C enumerator) ended up generating
an invalid C enum
- because the generator adds a _MAX terminator to each enum,
the use of an enum member 'max' can also cause this clash
- if an enum omits 'data', the generator left a python stack
trace rather than a graceful message
- an enum that used a non-array 'data' was silently accepted by
the parser
- an enum that used non-string members in the 'data' member
was silently accepted by the parser

Add check_enum to cover these situations, and update testcases
to match.  While valid .json files won't trigger any of these
cases, we might as well be nicer to developers that make a typo
while trying to add new QAPI code.

Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
2015-05-05 18:39:00 +02:00
..
include qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
comments.err qapi.py: Permit comments starting anywhere on the line 2013-07-29 10:37:11 -05:00
comments.exit qapi.py: Permit comments starting anywhere on the line 2013-07-29 10:37:11 -05:00
comments.json
comments.out qapi script: remember explicitly defined enum values 2014-03-11 09:07:41 -04:00
duplicate-key.err qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
duplicate-key.exit qapi script: add check for duplicated key 2014-03-11 09:07:41 -04:00
duplicate-key.json qapi script: add check for duplicated key 2014-03-11 09:07:41 -04:00
duplicate-key.out qapi script: add check for duplicated key 2014-03-11 09:07:41 -04:00
empty.err
empty.exit
empty.json
empty.out
enum-bad-name.err qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-bad-name.exit qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-bad-name.json qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-bad-name.out qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-clash-member.err qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
enum-clash-member.exit qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
enum-clash-member.json qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
enum-clash-member.out qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
enum-dict-member.err qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
enum-dict-member.exit qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
enum-dict-member.json qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
enum-dict-member.out qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
enum-empty.err qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-empty.exit qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-empty.json qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-empty.out qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-int-member.err qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-int-member.exit qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-int-member.json qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-int-member.out qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-max-member.err qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
enum-max-member.exit qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
enum-max-member.json qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
enum-max-member.out qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
enum-missing-data.err qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
enum-missing-data.exit qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-missing-data.json qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
enum-missing-data.out qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-union-clash.err qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-union-clash.exit qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-union-clash.json qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-union-clash.out qapi: Add some enum tests 2015-05-05 18:39:00 +02:00
enum-wrong-data.err qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
enum-wrong-data.exit qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
enum-wrong-data.json qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
enum-wrong-data.out qapi: Better error messages for bad enums 2015-05-05 18:39:00 +02:00
event-nest-struct.err qapi script: clean up in scripts 2014-06-27 09:27:56 -04:00
event-nest-struct.exit qapi script: add event support 2014-06-23 11:01:25 -04:00
event-nest-struct.json qapi script: add event support 2014-06-23 11:01:25 -04:00
event-nest-struct.out qapi script: add event support 2014-06-23 11:01:25 -04:00
flat-union-invalid-branch-key.err qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
flat-union-invalid-branch-key.exit qapi script: check correctness of union 2014-03-11 09:07:41 -04:00
flat-union-invalid-branch-key.json qapi script: check correctness of union 2014-03-11 09:07:41 -04:00
flat-union-invalid-branch-key.out qapi script: check correctness of union 2014-03-11 09:07:41 -04:00
flat-union-invalid-discriminator.err qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
flat-union-invalid-discriminator.exit qapi script: check correctness of union 2014-03-11 09:07:41 -04:00
flat-union-invalid-discriminator.json qapi script: check correctness of union 2014-03-11 09:07:41 -04:00
flat-union-invalid-discriminator.out qapi script: check correctness of union 2014-03-11 09:07:41 -04:00
flat-union-no-base.err qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
flat-union-no-base.exit qapi script: check correctness of union 2014-03-11 09:07:41 -04:00
flat-union-no-base.json qapi script: check correctness of union 2014-03-11 09:07:41 -04:00
flat-union-no-base.out qapi script: check correctness of union 2014-03-11 09:07:41 -04:00
flat-union-reverse-define.err qapi script: support enum type as discriminator in union 2014-03-11 09:07:42 -04:00
flat-union-reverse-define.exit qapi script: support enum type as discriminator in union 2014-03-11 09:07:42 -04:00
flat-union-reverse-define.json qapi script: support enum type as discriminator in union 2014-03-11 09:07:42 -04:00
flat-union-reverse-define.out qapi script: support enum type as discriminator in union 2014-03-11 09:07:42 -04:00
flat-union-string-discriminator.err qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
flat-union-string-discriminator.exit qapi script: do not allow string discriminator 2014-03-11 09:07:42 -04:00
flat-union-string-discriminator.json qapi script: do not allow string discriminator 2014-03-11 09:07:42 -04:00
flat-union-string-discriminator.out qapi script: do not allow string discriminator 2014-03-11 09:07:42 -04:00
funny-char.err qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
funny-char.exit qapi.py: Reject invalid characters in schema file 2013-07-29 10:37:11 -05:00
funny-char.json
funny-char.out qapi.py: Reject invalid characters in schema file 2013-07-29 10:37:11 -05:00
include-before-err.err qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-before-err.exit qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-before-err.json qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-before-err.out qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-cycle-b.json qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-cycle-c.json qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-cycle.err qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-cycle.exit qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-cycle.json qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-cycle.out qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-format-err.err qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-format-err.exit qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-format-err.json qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-format-err.out qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-nested-err.err qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-nested-err.exit qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-nested-err.json qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-nested-err.out qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-no-file.err qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-no-file.exit qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-no-file.json qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-no-file.out qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-non-file.err qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-non-file.exit qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-non-file.json qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-non-file.out qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-relpath-sub.json qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-relpath.err qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-relpath.exit qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-relpath.json qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-relpath.out qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-repetition-sub.json qapi: skip redundant includes 2014-05-16 10:35:59 -04:00
include-repetition.err qapi: skip redundant includes 2014-05-16 10:35:59 -04:00
include-repetition.exit qapi: skip redundant includes 2014-05-16 10:35:59 -04:00
include-repetition.json qapi: skip redundant includes 2014-05-16 10:35:59 -04:00
include-repetition.out qapi: skip redundant includes 2014-05-16 10:35:59 -04:00
include-self-cycle.err qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-self-cycle.exit qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-self-cycle.json qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-self-cycle.out qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-simple-sub.json qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-simple.err qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-simple.exit qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-simple.json qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
include-simple.out qapi: Add a primitive to include other files from a QAPI schema file 2014-05-08 14:19:58 -04:00
indented-expr.err
indented-expr.exit
indented-expr.json
indented-expr.out qapi.py: Restructure lexer and parser 2013-07-29 10:37:10 -05:00
missing-colon.err qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
missing-colon.exit qapi.py: Fix schema parser to check syntax systematically 2013-07-29 10:37:11 -05:00
missing-colon.json
missing-colon.out qapi.py: Fix schema parser to check syntax systematically 2013-07-29 10:37:11 -05:00
missing-comma-list.err qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
missing-comma-list.exit qapi.py: Fix schema parser to check syntax systematically 2013-07-29 10:37:11 -05:00
missing-comma-list.json
missing-comma-list.out qapi.py: Fix schema parser to check syntax systematically 2013-07-29 10:37:11 -05:00
missing-comma-object.err qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
missing-comma-object.exit qapi.py: Fix schema parser to check syntax systematically 2013-07-29 10:37:11 -05:00
missing-comma-object.json
missing-comma-object.out qapi.py: Fix schema parser to check syntax systematically 2013-07-29 10:37:11 -05:00
non-objects.err qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
non-objects.exit
non-objects.json
non-objects.out
qapi-schema-test.err
qapi-schema-test.exit
qapi-schema-test.json qapi: Fix generation of 'size' builtin type 2015-05-05 18:39:00 +02:00
qapi-schema-test.out qapi: Fix generation of 'size' builtin type 2015-05-05 18:39:00 +02:00
quoted-structural-chars.err qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
quoted-structural-chars.exit qapi.py: Restructure lexer and parser 2013-07-29 10:37:10 -05:00
quoted-structural-chars.json
quoted-structural-chars.out qapi.py: Restructure lexer and parser 2013-07-29 10:37:10 -05:00
test-qapi.py qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
trailing-comma-list.err qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
trailing-comma-list.exit qapi.py: Fix schema parser to check syntax systematically 2013-07-29 10:37:11 -05:00
trailing-comma-list.json
trailing-comma-list.out qapi.py: Fix schema parser to check syntax systematically 2013-07-29 10:37:11 -05:00
trailing-comma-object.err qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
trailing-comma-object.exit qapi.py: Fix schema parser to check syntax systematically 2013-07-29 10:37:11 -05:00
trailing-comma-object.json
trailing-comma-object.out qapi.py: Fix schema parser to check syntax systematically 2013-07-29 10:37:11 -05:00
unclosed-list.err qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
unclosed-list.exit
unclosed-list.json
unclosed-list.out
unclosed-object.err qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
unclosed-object.exit
unclosed-object.json
unclosed-object.out
unclosed-string.err qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
unclosed-string.exit
unclosed-string.json
unclosed-string.out
union-invalid-base.err qapi: Use an explicit input file 2014-05-08 14:19:58 -04:00
union-invalid-base.exit qapi script: check correctness of union 2014-03-11 09:07:41 -04:00
union-invalid-base.json qapi script: check correctness of union 2014-03-11 09:07:41 -04:00
union-invalid-base.out qapi script: check correctness of union 2014-03-11 09:07:41 -04:00