[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 13/28] qapi: Enforce event naming rules
From: |
Markus Armbruster |
Subject: |
Re: [PATCH 13/28] qapi: Enforce event naming rules |
Date: |
Wed, 24 Mar 2021 07:22:56 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) |
John Snow <jsnow@redhat.com> writes:
> On 3/23/21 5:40 AM, Markus Armbruster wrote:
>> Event names should be ALL_CAPS with words separated by underscore.
>> Enforce this. The only offenders are in tests/. Fix them. Existing
>> test event-case covers the new error.
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> ---
>> tests/unit/test-qmp-event.c | 6 +++---
>> scripts/qapi/expr.py | 4 +++-
>> tests/qapi-schema/doc-good.json | 4 ++--
>> tests/qapi-schema/doc-good.out | 4 ++--
>> tests/qapi-schema/doc-good.txt | 2 +-
>> tests/qapi-schema/doc-invalid-return.json | 4 ++--
>> tests/qapi-schema/event-case.err | 2 ++
>> tests/qapi-schema/event-case.json | 2 --
>> tests/qapi-schema/event-case.out | 14 --------------
>> tests/qapi-schema/qapi-schema-test.json | 6 +++---
>> tests/qapi-schema/qapi-schema-test.out | 8 ++++----
>> 11 files changed, 22 insertions(+), 34 deletions(-)
>> diff --git a/tests/unit/test-qmp-event.c
>> b/tests/unit/test-qmp-event.c
>> index 047f44ff9a..d58c3b78f2 100644
>> --- a/tests/unit/test-qmp-event.c
>> +++ b/tests/unit/test-qmp-event.c
>> @@ -143,7 +143,7 @@ static void test_event_d(TestEventData *data,
>> static void test_event_deprecated(TestEventData *data, const
>> void *unused)
>> {
>> - data->expect = qdict_from_jsonf_nofail("{ 'event':
>> 'TEST-EVENT-FEATURES1' }");
>> + data->expect = qdict_from_jsonf_nofail("{ 'event':
>> 'TEST_EVENT_FEATURES1' }");
>> memset(&compat_policy, 0, sizeof(compat_policy));
>> @@ -163,7 +163,7 @@ static void
>> test_event_deprecated_data(TestEventData *data, const void *unused)
>> {
>> memset(&compat_policy, 0, sizeof(compat_policy));
>> - data->expect = qdict_from_jsonf_nofail("{ 'event':
>> 'TEST-EVENT-FEATURES0',"
>> + data->expect = qdict_from_jsonf_nofail("{ 'event':
>> 'TEST_EVENT_FEATURES0',"
>> " 'data': { 'foo': 42 } }");
>> qapi_event_send_test_event_features0(42);
>> g_assert(data->emitted);
>> @@ -172,7 +172,7 @@ static void test_event_deprecated_data(TestEventData
>> *data, const void *unused)
>> compat_policy.has_deprecated_output = true;
>> compat_policy.deprecated_output = COMPAT_POLICY_OUTPUT_HIDE;
>> - data->expect = qdict_from_jsonf_nofail("{ 'event':
>> 'TEST-EVENT-FEATURES0' }");
>> + data->expect = qdict_from_jsonf_nofail("{ 'event':
>> 'TEST_EVENT_FEATURES0' }");
>> qapi_event_send_test_event_features0(42);
>> g_assert(data->emitted);
>> diff --git a/scripts/qapi/expr.py b/scripts/qapi/expr.py
>> index b5fb0be48b..c065505b27 100644
>> --- a/scripts/qapi/expr.py
>> +++ b/scripts/qapi/expr.py
>> @@ -45,7 +45,9 @@ def check_name_str(name, info, source):
>> def check_name_upper(name, info, source):
>> stem = check_name_str(name, info, source)
>> - # TODO reject '[a-z-]' in @stem
>> + if re.search(r'[a-z-]', stem):
>> + raise QAPISemError(
>> + info, "name of %s must not use lowercase or '-'" % source)
>>
>
> Does a little bit more than check_name_upper. Is this only used for
> event names? I guess so. Should it be inlined into check_defn_name_str
> instead in this case, or nah?
I'd prefer not to inline. I'm open to better function names.
We have three name styles. qapi-code-gen.txt:
[Type] definitions should always use CamelCase for
user-defined type names, while built-in types are lowercase.
[...]
Command names, and member names within a type, should be all lower
case with words separated by a hyphen. [...]
Event names should be ALL_CAPS with words separated by underscore.
I define three functions for them: check_name_camel(),
check_name_lower(), and check_name_upper().
The functions factor out the naming rule aspect, and they let us keep
the naming rule aspect together. That's why I'd prefer not to inline.
We could name them after their purpose instead:
check_name_user_defined_type(), check_name_command_or_member(),
check_name_event(). The first two are rather long. Shorter:
check_name_type(), check_name_other(), check_name_event().
Thoughts?
- [PATCH 21/28] tests-qmp-cmds: Drop unused and incorrect qmp_TestIfCmd(), (continued)
[PATCH 10/28] qapi: Rework name checking in preparation of stricter checking, Markus Armbruster, 2021/03/23
Re: [PATCH 10/28] qapi: Rework name checking in preparation of stricter checking, John Snow, 2021/03/23