[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v14 13/15] qapi: Enforce (or whitelist) case con
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH v14 13/15] qapi: Enforce (or whitelist) case conventions on qapi members |
Date: |
Wed, 2 Dec 2015 08:19:28 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 |
On 12/02/2015 06:41 AM, Eric Blake wrote:
> On 12/02/2015 04:51 AM, Markus Armbruster wrote:
>> This is the fixup I mentioned in the v13 thread. The "Unreachable and
>> not implemented" hunk should probably be its own patch.
>
> In fact, that hunk...
>
>>
>> diff --git a/scripts/qapi.py b/scripts/qapi.py
>> index 6d38d7c..870e476 100644
>> --- a/scripts/qapi.py
>> +++ b/scripts/qapi.py
>
>> @@ -1073,7 +1071,8 @@ class QAPISchemaMember(object):
>> return '(parameter of %s)' % owner[:-4]
>> else:
>> assert owner.endswith('-wrapper')
>> - return '(branch of %s)' % owner[:-8]
>> + # Unreachable and not implemented
>> + assert False
>> if owner.endswith('Kind'):
>> # See QAPISchema._make_implicit_enum_type()
>> return '(branch of %s)' % owner[:-4]
>
> ...should probably just be squashed directly into commit 8f3a05b on your
> current qapi-next branch, since it hasn't landed upstream yet.
>
> Your fixup looks sane, and eliminates the need for 12/15. So I'm fine
> if you'd like to make that change when updating qapi-next.
> Reviewed-by: Eric Blake <address@hidden>
Scratch that.
With your patch, the positive tests no longer work in isolation. You
were getting lucky that things sorted such that 'Foo' was checked for
correctness prior to 'UuidInfo'; but if you comment out the 'Foo'
declaration, or rename from 'Foo' to something else that hashes after
'UuidInfo', then args-member-case and union-branch-case start reporting
failures about UuidInfo (and only enum-member-case honors the
whitelist). That's because your change to qapi.py would require the
whitelist to contain ':obj-UuidInfo-args' and 'UuidInfoKind',
respectively (with my approach of info['name'], the whitelist containing
'UuidInfo' was sufficient).
Maybe we need to modify qapi.py as follows:
diff --git i/scripts/qapi.py w/scripts/qapi.py
index 04c4c8d..1325da1 100644
--- i/scripts/qapi.py
+++ w/scripts/qapi.py
@@ -71,6 +71,10 @@ case_whitelist = [
'QapiErrorClass', # all members, visible through errors
'UuidInfo', # UUID, visible through query-uuid
'X86CPURegister32', # all members, visible indirectly through
qom-get
+
+ # For use in the testsuite
+ ':obj-x-UuidInfo-arg', # args-member-case
+ 'x-UuidInfoList', # union-branch-case
]
enum_types = []
index 1bc823a..193eb66 100644
--- i/tests/qapi-schema/args-member-case.json
+++ w/tests/qapi-schema/args-member-case.json
@@ -1,3 +1,3 @@
# Member names should be 'lower-case' unless the struct/command is
whitelisted
-{ 'command': 'UuidInfo', 'data': { 'Arg': 'int' } }
+{ 'command': 'x-UuidInfo', 'data': { 'Arg': 'int' } }
{ 'command': 'Foo', 'data': { 'Arg': 'int' } }
index a5951f1..4f0988a 100644
--- i/tests/qapi-schema/union-branch-case.json
+++ w/tests/qapi-schema/union-branch-case.json
@@ -1,3 +1,3 @@
# Branch names should be 'lower-case' unless the union is whitelisted
-{ 'union': 'UuidInfo', 'data': { 'Branch': 'int' } }
+{ 'union': 'x-UuidInfo', 'data': { 'Branch': 'int' } }
{ 'union': 'Foo', 'data': { 'Branch': 'int' } }
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [PATCH v14 10/15] qapi: Prepare new QAPISchemaMember base class, (continued)
- [Qemu-devel] [PATCH v14 10/15] qapi: Prepare new QAPISchemaMember base class, Eric Blake, 2015/12/02
- [Qemu-devel] [PATCH v14 03/15] qapi: Convert QType into QAPI built-in enum type, Eric Blake, 2015/12/02
- [Qemu-devel] [PATCH v14 08/15] qapi: Simplify visits of optional fields, Eric Blake, 2015/12/02
- [Qemu-devel] [PATCH v14 11/15] qapi: Track enum values by QAPISchemaMember, not string, Eric Blake, 2015/12/02
- [Qemu-devel] [PATCH v14 15/15] qapi: Detect base class loops, Eric Blake, 2015/12/02
- [Qemu-devel] [PATCH v14 13/15] qapi: Enforce (or whitelist) case conventions on qapi members, Eric Blake, 2015/12/02
- Re: [Qemu-devel] [PATCH v14 13/15] qapi: Enforce (or whitelist) case conventions on qapi members, Markus Armbruster, 2015/12/02
- Re: [Qemu-devel] [PATCH v14 13/15] qapi: Enforce (or whitelist) case conventions on qapi members, Eric Blake, 2015/12/02
- [Qemu-devel] [PATCH] fixup! qapi: Enforce (or whitelist) case conventions on qapi members, Eric Blake, 2015/12/02
[Qemu-devel] [PATCH v14 12/15] qapi: Populate info['name'] for each entity, Eric Blake, 2015/12/02
[Qemu-devel] [PATCH v14 04/15] qapi: Simplify visiting of alternate types, Eric Blake, 2015/12/02
[Qemu-devel] [PATCH v14 14/15] qapi: Move duplicate collision checks to schema check(), Eric Blake, 2015/12/02
Re: [Qemu-devel] [PATCH v14 00/15] qapi member collision (post-introspection cleanups, subset D), Markus Armbruster, 2015/12/02