Eric Blake <ebl...@redhat.com> writes: > Demonstrate that the qapi generator doesn't deal well with > expressions that aren't up to par. Later patches will improve > the expected results as the generator is made stricter. Only > one of the added tests actually behaves sanely at rejecting > obvious problems. > > Note that in some cases, we reject bad QAPI merely because our > pseudo-JSON parser does not yet know how to parse numbers. This > series does not address that, but when a later series adds support > for numeric defaults of integer fields, the testsuite will ensure > that we don't lose the error (and hopefully that the error > message quality is improved). > > Signed-off-by: Eric Blake <ebl...@redhat.com> [...] > new file mode 100644 > index 0000000..e69de29 > diff --git a/tests/qapi-schema/event-case.exit > b/tests/qapi-schema/event-case.exit > new file mode 100644 > index 0000000..573541a > --- /dev/null > +++ b/tests/qapi-schema/event-case.exit > @@ -0,0 +1 @@ > +0 > diff --git a/tests/qapi-schema/event-case.json > b/tests/qapi-schema/event-case.json > new file mode 100644 > index 0000000..52dfc3a > --- /dev/null > +++ b/tests/qapi-schema/event-case.json > @@ -0,0 +1,2 @@ > +# FIXME: we should reject an event name that is not all caps > +{ 'event': 'oops' }
qapi-code-gen.txt documents the naming conventions: Types, commands, and events share a common namespace. Therefore, generally speaking, type definitions should always use CamelCase for user-defined type names, while built-in types are lowercase. Type definitions should not end in 'Kind', as this namespace is used for creating implicit C enums for visiting union types. Command names, and field names within a type, should be all lower case with words separated by a hyphen. However, some existing older commands and complex types use underscore; when extending such expressions, consistency is preferred over blindly avoiding underscore. Event names should be ALL_CAPS with words separated by underscore. The special string '**' appears for some commands that manually perform their own type checking rather than relying on the type-safe code produced by the qapi code generators. We should either enforce the conventions consistently, or not at all. Enforcing them makes certain kinds of name clashes in generated C impossible. If we don't enforce them, we should catch the clashes. Since I haven't read to the end of your series, I have to ask: do you intend to enforce them? > diff --git a/tests/qapi-schema/event-case.out > b/tests/qapi-schema/event-case.out > new file mode 100644 > index 0000000..3764bc7 > --- /dev/null > +++ b/tests/qapi-schema/event-case.out > @@ -0,0 +1,3 @@ > +[OrderedDict([('event', 'oops')])] > +[] > +[] [...]