From: Markus Armbruster <armbru@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: qemu-devel@nongnu.org, marcandre.lureau@redhat.com,
mdroth@linux.vnet.ibm.com
Subject: Re: [Qemu-devel] [PATCH for-2.9 02/47] qapi: Make doc comments optional where we don't need them
Date: Tue, 14 Mar 2017 08:21:34 +0100 [thread overview]
Message-ID: <877f3sqq69.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <89b4538d-216a-07da-1552-e1bd617a4f84@redhat.com> (Eric Blake's message of "Mon, 13 Mar 2017 16:00:05 -0500")
Eric Blake <eblake@redhat.com> writes:
> On 03/13/2017 01:18 AM, Markus Armbruster wrote:
>> Since we added the documentation generator in commit 3313b61, doc
>> comments are mandatory. That's a very good idea for a schema that
>> needs to be documented, but has proven to be annoying for testing.
>
> As I've found out while rebasing my JSON output visitor as well as
> patches to allow anonymous bases to flat unions. Thanks, this will help me!
>
>>
>> Make doc comments optional again, but add a new directive
>>
>> { 'pragma': { 'doc-required': true } }
>>
>> to let a QAPI schema require them.
>
> I like it. It's extensible to other pragmas, as well; and reading
> ahead, it looks like you did a good job of flagging unknown pragmas.
>
>>
>> Require documentation in the schemas we actually want documented:
>> qapi-schema.json and qga/qapi-schema.json.
>>
>> We could probably make qapi2texi.py cope with incomplete
>> documentation, but for now, simply make it refuse to run unless the
>> schema has 'doc-required': true.
>
> I'd rather fail early on our non-documented stuff then risk broken
> corner cases; so I think you made the right decision.
I figure making qapi2texi.py robust wouldn't be hard, but decided not to
try for 2.9.
>>
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> ---
>> docs/qapi-code-gen.txt | 40 +++++++++++++++++++++++++-------------
>
>> @@ -277,6 +280,11 @@ class QAPISchemaParser(object):
>> "Value of 'include' must be a string")
>> self._include(include, info, os.path.dirname(abs_fname),
>> previously_included)
>> + elif "pragma" in expr:
>> + if len(expr) != 1:
>> + raise QAPISemError(info, "Invalid 'pragma' directive")
>
> You may also want to check that you have an actual dictionary; otherwise...
>
>> + for name, value in expr['pragma'].iteritems():
>
> calling .iteritems() can lead to some funky python messages. For
> example, tweaking qapi-schema.json to use
>
> { 'pragma': [ { 'doc-required': true } ] }
>
> =>
>
> $ make
> GEN qmp-commands.h
> Traceback (most recent call last):
> File "/home/eblake/qemu/scripts/qapi-commands.py", line 317, in <module>
> schema = QAPISchema(input_file)
> File "/home/eblake/qemu/scripts/qapi.py", line 1496, in __init__
> parser = QAPISchemaParser(open(fname, "r"))
> File "/home/eblake/qemu/scripts/qapi.py", line 286, in __init__
> for name, value in expr['pragma'].iteritems():
> AttributeError: 'list' object has no attribute 'iteritems'
> Makefile:431: recipe for target 'qmp-commands.h' failed
You're right. Need to decide whether to fix it in a respin or on top.
> Not the end of the world, but we've done a nice job elsewhere of
> avoiding cryptic python traces.
>
>> + global doc_required
>> + if name == 'doc-required':
>> + if not isinstance(value, bool):
>> + raise QAPISemError(info,
>> + "Pragma 'doc-required' must be boolean")
>> + doc_required = value
>
> No testsuite coverage of this message?
Not yet, i.e. you're right, test coverage is advisable even for exotic
stuff that's expected not to change like pragma.
> If you decide to not bother, or to defer error message(s) cleanup to
> followups (especially since we are running short on time for fixing the
> actual doc regression from going into 2.9), then using this patch as-is
> can have:
>
> Reviewed-by: Eric Blake <eblake@redhat.com>
Thanks!
> Of course, if you spin a v2 that actually addresses my concerns, it
> probably will be more involved than something that can trivially keep my
> R-b (in part because you'll probably also want a testsuite addition to
> cover any new error message...).
Possible :)
next prev parent reply other threads:[~2017-03-14 7:21 UTC|newest]
Thread overview: 137+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-13 6:18 [Qemu-devel] [PATCH for-2.9 00/47] qapi: Put type information back into QMP documentation Markus Armbruster
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 01/47] qapi: Factor QAPISchemaParser._include() out of .__init__() Markus Armbruster
2017-03-13 19:34 ` Eric Blake
2017-03-14 8:28 ` Marc-André Lureau
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 02/47] qapi: Make doc comments optional where we don't need them Markus Armbruster
2017-03-13 21:00 ` Eric Blake
2017-03-14 7:21 ` Markus Armbruster [this message]
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 03/47] qapi: Back out doc comments added just to please qapi.py Markus Armbruster
2017-03-13 21:13 ` Eric Blake
2017-03-14 7:26 ` Markus Armbruster
2017-03-14 8:28 ` Marc-André Lureau
2017-03-14 9:45 ` Markus Armbruster
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 04/47] docs/qapi-code-gen.txt: Drop confusing reference to 'gen' Markus Armbruster
2017-03-13 22:17 ` Eric Blake
2017-03-14 8:30 ` Marc-André Lureau
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 05/47] qapi: Have each QAPI schema declare its returns white-list Markus Armbruster
2017-03-13 22:41 ` Eric Blake
2017-03-14 7:40 ` Markus Armbruster
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 06/47] qapi: Have each QAPI schema declare its name rule violations Markus Armbruster
2017-03-13 22:46 ` Eric Blake
2017-03-14 7:51 ` Markus Armbruster
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 07/47] qapi: Clean up build of generated documentation Markus Armbruster
2017-03-14 15:55 ` Eric Blake
2017-03-15 7:08 ` Markus Armbruster
2017-03-15 11:53 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 08/47] tests/qapi-schema: Cover empty union base Markus Armbruster
2017-03-14 8:41 ` Marc-André Lureau
2017-03-14 15:56 ` Eric Blake
2017-03-15 7:11 ` Markus Armbruster
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 09/47] qapi: Fix to reject empty union base gracefully Markus Armbruster
2017-03-14 8:40 ` Marc-André Lureau
2017-03-14 15:58 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 10/47] qapi2texi: Fix up output around #optional Markus Armbruster
2017-03-14 8:37 ` Marc-André Lureau
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 11/47] qapi: Avoid unwanted blank lines in QAPIDoc Markus Armbruster
2017-03-14 8:46 ` Marc-André Lureau
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 12/47] qapi/rocker: Fix up doc comment notes on optional members Markus Armbruster
2017-03-14 8:49 ` Marc-André Lureau
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 13/47] qapi: Fix QAPISchemaEnumType.is_implicit() for 'QType' Markus Armbruster
2017-03-14 16:03 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 14/47] qapi: Prepare for requiring more complete documentation Markus Armbruster
2017-03-14 16:08 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 15/47] qapi: Conjure up QAPIDoc.ArgSection for undocumented members Markus Armbruster
2017-03-14 17:16 ` Eric Blake
2017-03-15 7:12 ` Markus Armbruster
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 16/47] qapi2texi: Convert to QAPISchemaVisitor Markus Armbruster
2017-03-14 17:31 ` Eric Blake
2017-03-15 7:14 ` Markus Armbruster
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 17/47] qapi: The #optional tag is redundant, drop Markus Armbruster
2017-03-14 17:59 ` Eric Blake
2017-03-15 7:22 ` Markus Armbruster
2017-03-14 20:14 ` Eric Blake
2017-03-15 7:15 ` Markus Armbruster
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 18/47] qapi: Use raw strings for regular expressions consistently Markus Armbruster
2017-03-14 18:00 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 19/47] qapi: Prefer single-quoted strings more consistently Markus Armbruster
2017-03-14 18:05 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 20/47] qapi2texi: Plainer enum value and member name formatting Markus Armbruster
2017-03-14 18:06 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 21/47] qapi2texi: Present the table of members more clearly Markus Armbruster
2017-03-14 18:08 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 22/47] qapi2texi: Explain enum value undocumentedness " Markus Armbruster
2017-03-14 19:00 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 23/47] qapi2texi: Don't hide undocumented members and arguments Markus Armbruster
2017-03-14 19:02 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 24/47] qapi2texi: Implement boxed argument documentation Markus Armbruster
2017-03-14 19:12 ` Eric Blake
2017-03-15 7:23 ` Markus Armbruster
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 25/47] qapi2texi: Include member type in generated documentation Markus Armbruster
2017-03-14 12:42 ` Marc-André Lureau
2017-03-14 15:16 ` Markus Armbruster
2017-03-14 19:16 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 26/47] qapi2texi: Generate reference to base type members Markus Armbruster
2017-03-14 19:29 ` Eric Blake
2017-03-15 7:30 ` Markus Armbruster
2017-03-15 12:13 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 27/47] qapi2texi: Generate documentation for variant members Markus Armbruster
2017-03-14 19:36 ` Eric Blake
2017-03-15 7:36 ` Markus Armbruster
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 28/47] qapi2texi: Generate descriptions for simple union tags Markus Armbruster
2017-03-14 19:54 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 29/47] qapi2texi: Use category "Object" for all object types Markus Armbruster
2017-03-14 19:56 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 30/47] tests/qapi-schema: Improve doc / expression mismatch coverage Markus Armbruster
2017-03-14 20:02 ` Eric Blake
2017-03-14 20:36 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 31/47] qapi: Fix detection of doc / expression mismatch Markus Armbruster
2017-03-14 20:35 ` Eric Blake
2017-03-15 7:39 ` Markus Armbruster
2017-03-15 12:14 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 32/47] qapi: Move detection of doc / expression name mismatch Markus Armbruster
2017-03-14 20:43 ` Eric Blake
2017-03-15 7:39 ` Markus Armbruster
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 33/47] qapi: Improve error message on @NAME: in free-form doc Markus Armbruster
2017-03-14 20:46 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 34/47] qapi: Move empty doc section checking to doc parser Markus Armbruster
2017-03-13 6:23 ` Markus Armbruster
2017-03-15 1:40 ` Eric Blake
2017-03-15 7:44 ` Markus Armbruster
2017-03-15 1:37 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 35/47] tests/qapi-schema: Rename doc-bad-args to doc-bad-command-arg Markus Armbruster
2017-03-14 20:47 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 36/47] tests/qapi-schema: Improve coverage of bogus member docs Markus Armbruster
2017-03-14 20:55 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 37/47] qapi: Fix detection of bogus member documentation Markus Armbruster
2017-03-14 20:58 ` Eric Blake
2017-03-15 7:46 ` Markus Armbruster
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 38/47] qapi: Eliminate check_docs() and drop QAPIDoc.expr Markus Armbruster
2017-03-14 21:00 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 39/47] qapi: Drop unused variable events Markus Armbruster
2017-03-14 21:02 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 40/47] qapi: Simplify what gets stored in enum_types Markus Armbruster
2017-03-15 0:34 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 41/47] qapi: Factor add_name() calls out of the meta conditional Markus Armbruster
2017-03-15 0:39 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 42/47] qapi: enum_types is a list used like a dict, make it one Markus Armbruster
2017-03-15 0:47 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 43/47] qapi: struct_types " Markus Armbruster
2017-03-15 1:31 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 44/47] qapi: union_types " Markus Armbruster
2017-03-15 1:34 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 45/47] qapi: Drop unused .check_clash() parameter schema Markus Armbruster
2017-03-15 1:46 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 46/47] qapi: Make pylint a bit happier Markus Armbruster
2017-03-15 1:47 ` Eric Blake
2017-03-13 6:18 ` [Qemu-devel] [PATCH for-2.9 47/47] qapi: Fix a misleading parser error message Markus Armbruster
2017-03-15 1:48 ` Eric Blake
2017-03-13 10:32 ` [Qemu-devel] [PATCH for-2.9 00/47] qapi: Put type information back into QMP documentation Marc-André Lureau
2017-03-13 12:14 ` Markus Armbruster
2017-03-13 12:21 ` Marc-André Lureau
2017-03-13 13:12 ` Markus Armbruster
2017-03-14 13:22 ` Marc-André Lureau
2017-03-14 16:14 ` Markus Armbruster
2017-03-15 14:00 ` Marc-André Lureau
2017-03-14 13:24 ` Marc-André Lureau
2017-03-15 13:06 ` Markus Armbruster
2017-04-27 18:16 ` Eric Blake
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877f3sqq69.fsf@dusky.pond.sub.org \
--to=armbru@redhat.com \
--cc=eblake@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.