qapi: Add some union tests
commit3d0c48292633260269cb21551d9bab006b2f2781
authorEric Blake <eblake@redhat.com>
Mon, 4 May 2015 15:05:05 +0000 (4 09:05 -0600)
committerMarkus Armbruster <armbru@redhat.com>
Tue, 5 May 2015 16:39:00 +0000 (5 18:39 +0200)
tree597530c70700eb11506447f078e7726a541aabf4
parentcf3935907b5df16f667d54ad6761c7e937dcf425
qapi: Add some union tests

Demonstrate that the qapi generator doesn't deal well with unions
that aren't up to par. Later patches will update the expected
reseults as the generator is made stricter.  A few tests work
as planned, but most show poor or missing error messages.

Of particular note, qapi-code-gen.txt documents 'base' only for
flat unions, but the tests here demonstrate that we currently allow
a 'base' to a simple union, although it is exercised only in the
testsuite.  Later patches will remove this undocumented feature, to
give us more flexibility in adding other future extensions to union
types.  For example, one possible extension is the idea of a
type-safe simple enum, where added fields tie the discriminator to
a user-defined enum type rather than creating an implicit enum from
the names in 'data'.  But adding such safety on top of a simple
enum with a base type could look ambiguous with a flat enum;
besides, the documentation also mentions how any simple union can
be represented by an equivalent flat union.  So it will be simpler
to just outlaw support for something we aren't using.

Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
89 files changed:
tests/Makefile
tests/qapi-schema/alternate-array.err [new file with mode: 0644]
tests/qapi-schema/alternate-array.exit [new file with mode: 0644]
tests/qapi-schema/alternate-array.json [new file with mode: 0644]
tests/qapi-schema/alternate-array.out [new file with mode: 0644]
tests/qapi-schema/alternate-base.err [new file with mode: 0644]
tests/qapi-schema/alternate-base.exit [new file with mode: 0644]
tests/qapi-schema/alternate-base.json [new file with mode: 0644]
tests/qapi-schema/alternate-base.out [new file with mode: 0644]
tests/qapi-schema/alternate-clash.err [new file with mode: 0644]
tests/qapi-schema/alternate-clash.exit [new file with mode: 0644]
tests/qapi-schema/alternate-clash.json [new file with mode: 0644]
tests/qapi-schema/alternate-clash.out [new file with mode: 0644]
tests/qapi-schema/alternate-conflict-dict.err [new file with mode: 0644]
tests/qapi-schema/alternate-conflict-dict.exit [new file with mode: 0644]
tests/qapi-schema/alternate-conflict-dict.json [new file with mode: 0644]
tests/qapi-schema/alternate-conflict-dict.out [new file with mode: 0644]
tests/qapi-schema/alternate-conflict-string.err [new file with mode: 0644]
tests/qapi-schema/alternate-conflict-string.exit [new file with mode: 0644]
tests/qapi-schema/alternate-conflict-string.json [new file with mode: 0644]
tests/qapi-schema/alternate-conflict-string.out [new file with mode: 0644]
tests/qapi-schema/alternate-good.err [new file with mode: 0644]
tests/qapi-schema/alternate-good.exit [new file with mode: 0644]
tests/qapi-schema/alternate-good.json [new file with mode: 0644]
tests/qapi-schema/alternate-good.out [new file with mode: 0644]
tests/qapi-schema/alternate-nested.err [new file with mode: 0644]
tests/qapi-schema/alternate-nested.exit [new file with mode: 0644]
tests/qapi-schema/alternate-nested.json [new file with mode: 0644]
tests/qapi-schema/alternate-nested.out [new file with mode: 0644]
tests/qapi-schema/alternate-unknown.err [new file with mode: 0644]
tests/qapi-schema/alternate-unknown.exit [new file with mode: 0644]
tests/qapi-schema/alternate-unknown.json [new file with mode: 0644]
tests/qapi-schema/alternate-unknown.out [new file with mode: 0644]
tests/qapi-schema/flat-union-bad-base.err [new file with mode: 0644]
tests/qapi-schema/flat-union-bad-base.exit [new file with mode: 0644]
tests/qapi-schema/flat-union-bad-base.json [copied from tests/qapi-schema/flat-union-no-base.json with 50% similarity]
tests/qapi-schema/flat-union-bad-base.out [new file with mode: 0644]
tests/qapi-schema/flat-union-bad-discriminator.err [new file with mode: 0644]
tests/qapi-schema/flat-union-bad-discriminator.exit [new file with mode: 0644]
tests/qapi-schema/flat-union-bad-discriminator.json [new file with mode: 0644]
tests/qapi-schema/flat-union-bad-discriminator.out [new file with mode: 0644]
tests/qapi-schema/flat-union-base-star.err [new file with mode: 0644]
tests/qapi-schema/flat-union-base-star.exit [new file with mode: 0644]
tests/qapi-schema/flat-union-base-star.json [copied from tests/qapi-schema/flat-union-no-base.json with 65% similarity]
tests/qapi-schema/flat-union-base-star.out [new file with mode: 0644]
tests/qapi-schema/flat-union-base-union.err [new file with mode: 0644]
tests/qapi-schema/flat-union-base-union.exit [new file with mode: 0644]
tests/qapi-schema/flat-union-base-union.json [new file with mode: 0644]
tests/qapi-schema/flat-union-base-union.out [new file with mode: 0644]
tests/qapi-schema/flat-union-branch-clash.err [new file with mode: 0644]
tests/qapi-schema/flat-union-branch-clash.exit [new file with mode: 0644]
tests/qapi-schema/flat-union-branch-clash.json [new file with mode: 0644]
tests/qapi-schema/flat-union-branch-clash.out [new file with mode: 0644]
tests/qapi-schema/flat-union-inline.err [new file with mode: 0644]
tests/qapi-schema/flat-union-inline.exit [new file with mode: 0644]
tests/qapi-schema/flat-union-inline.json [new file with mode: 0644]
tests/qapi-schema/flat-union-inline.out [new file with mode: 0644]
tests/qapi-schema/flat-union-int-branch.err [new file with mode: 0644]
tests/qapi-schema/flat-union-int-branch.exit [new file with mode: 0644]
tests/qapi-schema/flat-union-int-branch.json [new file with mode: 0644]
tests/qapi-schema/flat-union-int-branch.out [new file with mode: 0644]
tests/qapi-schema/flat-union-no-base.err
tests/qapi-schema/flat-union-no-base.json
tests/qapi-schema/flat-union-optional-discriminator.err [new file with mode: 0644]
tests/qapi-schema/flat-union-optional-discriminator.exit [new file with mode: 0644]
tests/qapi-schema/flat-union-optional-discriminator.json [new file with mode: 0644]
tests/qapi-schema/flat-union-optional-discriminator.out [new file with mode: 0644]
tests/qapi-schema/union-bad-branch.err [new file with mode: 0644]
tests/qapi-schema/union-bad-branch.exit [new file with mode: 0644]
tests/qapi-schema/union-bad-branch.json [new file with mode: 0644]
tests/qapi-schema/union-bad-branch.out [new file with mode: 0644]
tests/qapi-schema/union-base-no-discriminator.err [new file with mode: 0644]
tests/qapi-schema/union-base-no-discriminator.exit [new file with mode: 0644]
tests/qapi-schema/union-base-no-discriminator.json [copied from tests/qapi-schema/union-invalid-base.json with 63% similarity]
tests/qapi-schema/union-base-no-discriminator.out [new file with mode: 0644]
tests/qapi-schema/union-invalid-base.err
tests/qapi-schema/union-invalid-base.json
tests/qapi-schema/union-max.err [new file with mode: 0644]
tests/qapi-schema/union-max.exit [new file with mode: 0644]
tests/qapi-schema/union-max.json [new file with mode: 0644]
tests/qapi-schema/union-max.out [new file with mode: 0644]
tests/qapi-schema/union-optional-branch.err [new file with mode: 0644]
tests/qapi-schema/union-optional-branch.exit [new file with mode: 0644]
tests/qapi-schema/union-optional-branch.json [new file with mode: 0644]
tests/qapi-schema/union-optional-branch.out [new file with mode: 0644]
tests/qapi-schema/union-unknown.err [new file with mode: 0644]
tests/qapi-schema/union-unknown.exit [new file with mode: 0644]
tests/qapi-schema/union-unknown.json [new file with mode: 0644]
tests/qapi-schema/union-unknown.out [new file with mode: 0644]