qapi tests: Elide redundant has_FOO in generated C
The has_FOO for pointer-valued FOO are redundant, except for arrays. They are also a nuisance to work with. Recent commit "qapi: Start to elide redundant has_FOO in generated C" provided the means to elide them step by step. This is the step for tests/qapi-schema/qapi-schema-test.json. Said commit explains the transformation in more detail. The invariant violations mentioned there do not occur here. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Message-Id: <20221104160712.3005652-6-armbru@redhat.com>
This commit is contained in:
parent
44ea9d9be3
commit
4b2fc7dbc4
@ -767,7 +767,6 @@ class QAPISchemaObjectTypeMember(QAPISchemaMember):
|
|||||||
'qapi/char.json',
|
'qapi/char.json',
|
||||||
'qapi/crypto.json',
|
'qapi/crypto.json',
|
||||||
'qapi/dump.json',
|
'qapi/dump.json',
|
||||||
'qapi/introspect.json',
|
|
||||||
'qapi/job.json',
|
'qapi/job.json',
|
||||||
'qapi/machine.json',
|
'qapi/machine.json',
|
||||||
'qapi/machine-target.json',
|
'qapi/machine-target.json',
|
||||||
@ -785,8 +784,7 @@ class QAPISchemaObjectTypeMember(QAPISchemaMember):
|
|||||||
'qapi/transaction.json',
|
'qapi/transaction.json',
|
||||||
'qapi/ui.json',
|
'qapi/ui.json',
|
||||||
'qapi/virtio.json',
|
'qapi/virtio.json',
|
||||||
'qga/qapi-schema.json',
|
'qga/qapi-schema.json']
|
||||||
'tests/qapi-schema/qapi-schema-test.json']
|
|
||||||
if self.info and any(self.info.fname.endswith(mod)
|
if self.info and any(self.info.fname.endswith(mod)
|
||||||
for mod in opt_out):
|
for mod in opt_out):
|
||||||
return self.optional
|
return self.optional
|
||||||
|
@ -174,7 +174,7 @@ static bool object_type_has_mandatory_members(SchemaInfo *type)
|
|||||||
g_assert(type->meta_type == SCHEMA_META_TYPE_OBJECT);
|
g_assert(type->meta_type == SCHEMA_META_TYPE_OBJECT);
|
||||||
|
|
||||||
for (tail = type->u.object.members; tail; tail = tail->next) {
|
for (tail = type->u.object.members; tail; tail = tail->next) {
|
||||||
if (!tail->value->has_q_default) {
|
if (!tail->value->q_default) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,15 +43,15 @@ void qmp_user_def_cmd1(UserDefOne * ud1, Error **errp)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
FeatureStruct1 *qmp_test_features0(bool has_fs0, FeatureStruct0 *fs0,
|
FeatureStruct1 *qmp_test_features0(FeatureStruct0 *fs0,
|
||||||
bool has_fs1, FeatureStruct1 *fs1,
|
FeatureStruct1 *fs1,
|
||||||
bool has_fs2, FeatureStruct2 *fs2,
|
FeatureStruct2 *fs2,
|
||||||
bool has_fs3, FeatureStruct3 *fs3,
|
FeatureStruct3 *fs3,
|
||||||
bool has_fs4, FeatureStruct4 *fs4,
|
FeatureStruct4 *fs4,
|
||||||
bool has_cfs1, CondFeatureStruct1 *cfs1,
|
CondFeatureStruct1 *cfs1,
|
||||||
bool has_cfs2, CondFeatureStruct2 *cfs2,
|
CondFeatureStruct2 *cfs2,
|
||||||
bool has_cfs3, CondFeatureStruct3 *cfs3,
|
CondFeatureStruct3 *cfs3,
|
||||||
bool has_cfs4, CondFeatureStruct4 *cfs4,
|
CondFeatureStruct4 *cfs4,
|
||||||
Error **errp)
|
Error **errp)
|
||||||
{
|
{
|
||||||
return g_new0(FeatureStruct1, 1);
|
return g_new0(FeatureStruct1, 1);
|
||||||
@ -77,8 +77,7 @@ void qmp_test_command_cond_features3(Error **errp)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
UserDefTwo *qmp_user_def_cmd2(UserDefOne *ud1a,
|
UserDefTwo *qmp_user_def_cmd2(UserDefOne *ud1a, UserDefOne *ud1b,
|
||||||
bool has_udb1, UserDefOne *ud1b,
|
|
||||||
Error **errp)
|
Error **errp)
|
||||||
{
|
{
|
||||||
UserDefTwo *ret;
|
UserDefTwo *ret;
|
||||||
@ -87,8 +86,8 @@ UserDefTwo *qmp_user_def_cmd2(UserDefOne *ud1a,
|
|||||||
|
|
||||||
ud1c->string = strdup(ud1a->string);
|
ud1c->string = strdup(ud1a->string);
|
||||||
ud1c->integer = ud1a->integer;
|
ud1c->integer = ud1a->integer;
|
||||||
ud1d->string = strdup(has_udb1 ? ud1b->string : "blah0");
|
ud1d->string = strdup(ud1b ? ud1b->string : "blah0");
|
||||||
ud1d->integer = has_udb1 ? ud1b->integer : 0;
|
ud1d->integer = ud1b ? ud1b->integer : 0;
|
||||||
|
|
||||||
ret = g_new0(UserDefTwo, 1);
|
ret = g_new0(UserDefTwo, 1);
|
||||||
ret->string0 = strdup("blah1");
|
ret->string0 = strdup("blah1");
|
||||||
@ -98,7 +97,6 @@ UserDefTwo *qmp_user_def_cmd2(UserDefOne *ud1a,
|
|||||||
ret->dict1->dict2->userdef = ud1c;
|
ret->dict1->dict2->userdef = ud1c;
|
||||||
ret->dict1->dict2->string = strdup("blah3");
|
ret->dict1->dict2->string = strdup("blah3");
|
||||||
ret->dict1->dict3 = g_new0(UserDefTwoDictDict, 1);
|
ret->dict1->dict3 = g_new0(UserDefTwoDictDict, 1);
|
||||||
ret->dict1->has_dict3 = true;
|
|
||||||
ret->dict1->dict3->userdef = ud1d;
|
ret->dict1->dict3->userdef = ud1d;
|
||||||
ret->dict1->dict3->string = strdup("blah4");
|
ret->dict1->dict3->string = strdup("blah4");
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ static void test_event_c(TestEventData *data,
|
|||||||
data->expect = qdict_from_jsonf_nofail(
|
data->expect = qdict_from_jsonf_nofail(
|
||||||
"{ 'event': 'EVENT_C', 'data': {"
|
"{ 'event': 'EVENT_C', 'data': {"
|
||||||
" 'a': 1, 'b': { 'integer': 2, 'string': 'test1' }, 'c': 'test2' } }");
|
" 'a': 1, 'b': { 'integer': 2, 'string': 'test1' }, 'c': 'test2' } }");
|
||||||
qapi_event_send_event_c(true, 1, true, &b, "test2");
|
qapi_event_send_event_c(true, 1, &b, "test2");
|
||||||
g_assert(data->emitted);
|
g_assert(data->emitted);
|
||||||
qobject_unref(data->expect);
|
qobject_unref(data->expect);
|
||||||
}
|
}
|
||||||
@ -135,7 +135,7 @@ static void test_event_d(TestEventData *data,
|
|||||||
" 'struct1': { 'integer': 2, 'string': 'test1', 'enum1': 'value1' },"
|
" 'struct1': { 'integer': 2, 'string': 'test1', 'enum1': 'value1' },"
|
||||||
" 'string': 'test2', 'enum2': 'value2' },"
|
" 'string': 'test2', 'enum2': 'value2' },"
|
||||||
" 'b': 'test3', 'enum3': 'value3' } }");
|
" 'b': 'test3', 'enum3': 'value3' } }");
|
||||||
qapi_event_send_event_d(&a, "test3", false, NULL, true, ENUM_ONE_VALUE3);
|
qapi_event_send_event_d(&a, "test3", NULL, true, ENUM_ONE_VALUE3);
|
||||||
g_assert(data->emitted);
|
g_assert(data->emitted);
|
||||||
qobject_unref(data->expect);
|
qobject_unref(data->expect);
|
||||||
}
|
}
|
||||||
|
@ -431,7 +431,7 @@ static void test_visitor_in_struct_nested(TestInputVisitorData *data,
|
|||||||
g_assert_cmpint(udp->dict1->dict2->userdef->integer, ==, 42);
|
g_assert_cmpint(udp->dict1->dict2->userdef->integer, ==, 42);
|
||||||
g_assert_cmpstr(udp->dict1->dict2->userdef->string, ==, "string");
|
g_assert_cmpstr(udp->dict1->dict2->userdef->string, ==, "string");
|
||||||
g_assert_cmpstr(udp->dict1->dict2->string, ==, "string2");
|
g_assert_cmpstr(udp->dict1->dict2->string, ==, "string2");
|
||||||
g_assert(udp->dict1->has_dict3 == false);
|
g_assert(!udp->dict1->dict3);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_visitor_in_list(TestInputVisitorData *data,
|
static void test_visitor_in_list(TestInputVisitorData *data,
|
||||||
|
@ -182,7 +182,6 @@ static void test_visitor_out_struct_nested(TestOutputVisitorData *data,
|
|||||||
ud2->dict1->dict2->string = g_strdup(strings[2]);
|
ud2->dict1->dict2->string = g_strdup(strings[2]);
|
||||||
|
|
||||||
ud2->dict1->dict3 = g_malloc0(sizeof(*ud2->dict1->dict3));
|
ud2->dict1->dict3 = g_malloc0(sizeof(*ud2->dict1->dict3));
|
||||||
ud2->dict1->has_dict3 = true;
|
|
||||||
ud2->dict1->dict3->userdef = g_new0(UserDefOne, 1);
|
ud2->dict1->dict3->userdef = g_new0(UserDefOne, 1);
|
||||||
ud2->dict1->dict3->userdef->string = g_strdup(string);
|
ud2->dict1->dict3->userdef->string = g_strdup(string);
|
||||||
ud2->dict1->dict3->userdef->integer = value;
|
ud2->dict1->dict3->userdef->integer = value;
|
||||||
@ -284,7 +283,6 @@ static void test_visitor_out_list_qapi_free(TestOutputVisitorData *data,
|
|||||||
value->dict1->dict2->userdef->string = g_strdup(string);
|
value->dict1->dict2->userdef->string = g_strdup(string);
|
||||||
value->dict1->dict2->userdef->integer = 42;
|
value->dict1->dict2->userdef->integer = 42;
|
||||||
value->dict1->dict2->string = g_strdup(string);
|
value->dict1->dict2->string = g_strdup(string);
|
||||||
value->dict1->has_dict3 = false;
|
|
||||||
|
|
||||||
QAPI_LIST_PREPEND(head, value);
|
QAPI_LIST_PREPEND(head, value);
|
||||||
}
|
}
|
||||||
|
@ -223,7 +223,6 @@ static UserDefTwo *nested_struct_create(void)
|
|||||||
udnp->dict1->dict2->userdef->string = strdup("test_string");
|
udnp->dict1->dict2->userdef->string = strdup("test_string");
|
||||||
udnp->dict1->dict2->string = strdup("test_string2");
|
udnp->dict1->dict2->string = strdup("test_string2");
|
||||||
udnp->dict1->dict3 = g_malloc0(sizeof(*udnp->dict1->dict3));
|
udnp->dict1->dict3 = g_malloc0(sizeof(*udnp->dict1->dict3));
|
||||||
udnp->dict1->has_dict3 = true;
|
|
||||||
udnp->dict1->dict3->userdef = g_new0(UserDefOne, 1);
|
udnp->dict1->dict3->userdef = g_new0(UserDefOne, 1);
|
||||||
udnp->dict1->dict3->userdef->integer = 43;
|
udnp->dict1->dict3->userdef->integer = 43;
|
||||||
udnp->dict1->dict3->userdef->string = strdup("test_string");
|
udnp->dict1->dict3->userdef->string = strdup("test_string");
|
||||||
@ -243,7 +242,7 @@ static void nested_struct_compare(UserDefTwo *udnp1, UserDefTwo *udnp2)
|
|||||||
udnp2->dict1->dict2->userdef->string);
|
udnp2->dict1->dict2->userdef->string);
|
||||||
g_assert_cmpstr(udnp1->dict1->dict2->string, ==,
|
g_assert_cmpstr(udnp1->dict1->dict2->string, ==,
|
||||||
udnp2->dict1->dict2->string);
|
udnp2->dict1->dict2->string);
|
||||||
g_assert(udnp1->dict1->has_dict3 == udnp2->dict1->has_dict3);
|
g_assert(!udnp1->dict1->dict3 == !udnp2->dict1->dict3);
|
||||||
g_assert_cmpint(udnp1->dict1->dict3->userdef->integer, ==,
|
g_assert_cmpint(udnp1->dict1->dict3->userdef->integer, ==,
|
||||||
udnp2->dict1->dict3->userdef->integer);
|
udnp2->dict1->dict3->userdef->integer);
|
||||||
g_assert_cmpstr(udnp1->dict1->dict3->userdef->string, ==,
|
g_assert_cmpstr(udnp1->dict1->dict3->userdef->string, ==,
|
||||||
|
Loading…
Reference in New Issue
Block a user