mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 17:23:56 -06:00
QAPI patches patches for 2023-04-26
-----BEGIN PGP SIGNATURE----- iQJGBAABCAAwFiEENUvIs9frKmtoZ05fOHC0AOuRhlMFAmRIvOkSHGFybWJydUBy ZWRoYXQuY29tAAoJEDhwtADrkYZTX3MQAIqrKQbOzQ81/cDZ7aeLOroDoGYf1Cs0 0NiEVlyoblWNzL3HraGgXiNRTP+zaG/TcFKza1nz8qjdkxWxBjdbfF5Lm6mQf5Zo tcHUjksmnUlPkLYSOyEjfY9SNvcS6g7djE/NF5lbJtzYGZScZpLarELR7oUvrcXR AEiw8N5FZXp+j6cTeWvrLzSqz9qBsFJUCGcGER0T/Mt5MlUwDexE1xe7g8oD5l+b s0jeQr1PTZm5k6ehajQtgbHvAkgH8xVTKqbB/U5iz4VhYriH+IPEOtfCFt6/1soz pVkYikJpazCvQMjqnWu9dE1onthgSsEIOV29kFU0Kr8ATZuJBQMuLVp4hSsbKANj BUVyL2/fUsIp7gd+KikXUOjKYajxek6Q2YLAPpL+1pBCTql/PBQ7td8CECdiv/9e Xh50q+BGvyEiyoyf4EEpaLXUZog605WHEaODj9uPtNHJP9x6Rqt93FUsdWUtt/k9 hJ8RSKy8njr0vxGoJkj89m2XfCwtuX3VQ5IXvv/If4U5Y4+JhcLtiqW+Njh8fAM4 ZwIrlUYG7inLUKFVcQ3sEGpaj611i5ixIxctUvEiggZX+fPeSFKYUr+Rq8WXM8gv suLXz7VF6H4Sw30lCvdQ4LSungbzlYAtQYpmdEQGoM8iasIi4PoDf0cTYBbMYHDX +pZvWC50cVtf =wLx6 -----END PGP SIGNATURE----- Merge tag 'pull-qapi-2023-04-26' of https://repo.or.cz/qemu/armbru into staging QAPI patches patches for 2023-04-26 # -----BEGIN PGP SIGNATURE----- # # iQJGBAABCAAwFiEENUvIs9frKmtoZ05fOHC0AOuRhlMFAmRIvOkSHGFybWJydUBy # ZWRoYXQuY29tAAoJEDhwtADrkYZTX3MQAIqrKQbOzQ81/cDZ7aeLOroDoGYf1Cs0 # 0NiEVlyoblWNzL3HraGgXiNRTP+zaG/TcFKza1nz8qjdkxWxBjdbfF5Lm6mQf5Zo # tcHUjksmnUlPkLYSOyEjfY9SNvcS6g7djE/NF5lbJtzYGZScZpLarELR7oUvrcXR # AEiw8N5FZXp+j6cTeWvrLzSqz9qBsFJUCGcGER0T/Mt5MlUwDexE1xe7g8oD5l+b # s0jeQr1PTZm5k6ehajQtgbHvAkgH8xVTKqbB/U5iz4VhYriH+IPEOtfCFt6/1soz # pVkYikJpazCvQMjqnWu9dE1onthgSsEIOV29kFU0Kr8ATZuJBQMuLVp4hSsbKANj # BUVyL2/fUsIp7gd+KikXUOjKYajxek6Q2YLAPpL+1pBCTql/PBQ7td8CECdiv/9e # Xh50q+BGvyEiyoyf4EEpaLXUZog605WHEaODj9uPtNHJP9x6Rqt93FUsdWUtt/k9 # hJ8RSKy8njr0vxGoJkj89m2XfCwtuX3VQ5IXvv/If4U5Y4+JhcLtiqW+Njh8fAM4 # ZwIrlUYG7inLUKFVcQ3sEGpaj611i5ixIxctUvEiggZX+fPeSFKYUr+Rq8WXM8gv # suLXz7VF6H4Sw30lCvdQ4LSungbzlYAtQYpmdEQGoM8iasIi4PoDf0cTYBbMYHDX # +pZvWC50cVtf # =wLx6 # -----END PGP SIGNATURE----- # gpg: Signature made Wed 26 Apr 2023 06:55:53 AM BST # gpg: using RSA key 354BC8B3D7EB2A6B68674E5F3870B400EB918653 # gpg: issuer "armbru@redhat.com" # gpg: Good signature from "Markus Armbruster <armbru@redhat.com>" [undefined] # gpg: aka "Markus Armbruster <armbru@pond.sub.org>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867 4E5F 3870 B400 EB91 8653 * tag 'pull-qapi-2023-04-26' of https://repo.or.cz/qemu/armbru: qapi: allow unions to contain further unions qapi: Improve specificity of type/member descriptions qapi: support updating expected test output via make qapi: Require boxed for conditional command and event arguments qapi: Fix code generated for optional conditional struct member tests/qapi-schema: Cover optional conditional struct member tests/qapi-schema: Clean up positive test for conditionals tests/qapi-schema: Rename a few conditionals tests/qapi-schema: Improve union discriminator coverage qapi: Fix to reject 'data': 'mumble' in struct qapi: Fix error message when type name or array is expected qapi: Simplify code a bit after previous commits qapi: Improve error message for unexpected array types qapi: Split up check_type() qapi: Clean up after removal of simple unions qapi/schema: Use super() qapi: Fix error message format regression Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
c3f9aa8e48
39 changed files with 383 additions and 103 deletions
|
@ -706,6 +706,51 @@ static void test_visitor_in_union_flat(TestInputVisitorData *data,
|
|||
g_assert(&base->enum1 == &tmp->enum1);
|
||||
}
|
||||
|
||||
static void test_visitor_in_union_in_union(TestInputVisitorData *data,
|
||||
const void *unused)
|
||||
{
|
||||
Visitor *v;
|
||||
g_autoptr(TestUnionInUnion) tmp = NULL;
|
||||
|
||||
v = visitor_input_test_init(data,
|
||||
"{ 'type': 'value-a', "
|
||||
" 'type-a': 'value-a1', "
|
||||
" 'integer': 2, "
|
||||
" 'name': 'fish' }");
|
||||
|
||||
visit_type_TestUnionInUnion(v, NULL, &tmp, &error_abort);
|
||||
g_assert_cmpint(tmp->type, ==, TEST_UNION_ENUM_VALUE_A);
|
||||
g_assert_cmpint(tmp->u.value_a.type_a, ==, TEST_UNION_ENUMA_VALUE_A1);
|
||||
g_assert_cmpint(tmp->u.value_a.u.value_a1.integer, ==, 2);
|
||||
g_assert_cmpint(strcmp(tmp->u.value_a.u.value_a1.name, "fish"), ==, 0);
|
||||
|
||||
qapi_free_TestUnionInUnion(tmp);
|
||||
|
||||
v = visitor_input_test_init(data,
|
||||
"{ 'type': 'value-a', "
|
||||
" 'type-a': 'value-a2', "
|
||||
" 'integer': 1729, "
|
||||
" 'size': 87539319 }");
|
||||
|
||||
visit_type_TestUnionInUnion(v, NULL, &tmp, &error_abort);
|
||||
g_assert_cmpint(tmp->type, ==, TEST_UNION_ENUM_VALUE_A);
|
||||
g_assert_cmpint(tmp->u.value_a.type_a, ==, TEST_UNION_ENUMA_VALUE_A2);
|
||||
g_assert_cmpint(tmp->u.value_a.u.value_a2.integer, ==, 1729);
|
||||
g_assert_cmpint(tmp->u.value_a.u.value_a2.size, ==, 87539319);
|
||||
|
||||
qapi_free_TestUnionInUnion(tmp);
|
||||
|
||||
v = visitor_input_test_init(data,
|
||||
"{ 'type': 'value-b', "
|
||||
" 'integer': 1729, "
|
||||
" 'onoff': true }");
|
||||
|
||||
visit_type_TestUnionInUnion(v, NULL, &tmp, &error_abort);
|
||||
g_assert_cmpint(tmp->type, ==, TEST_UNION_ENUM_VALUE_B);
|
||||
g_assert_cmpint(tmp->u.value_b.integer, ==, 1729);
|
||||
g_assert_cmpint(tmp->u.value_b.onoff, ==, true);
|
||||
}
|
||||
|
||||
static void test_visitor_in_alternate(TestInputVisitorData *data,
|
||||
const void *unused)
|
||||
{
|
||||
|
@ -1216,6 +1261,8 @@ int main(int argc, char **argv)
|
|||
NULL, test_visitor_in_null);
|
||||
input_visitor_test_add("/visitor/input/union-flat",
|
||||
NULL, test_visitor_in_union_flat);
|
||||
input_visitor_test_add("/visitor/input/union-in-union",
|
||||
NULL, test_visitor_in_union_in_union);
|
||||
input_visitor_test_add("/visitor/input/alternate",
|
||||
NULL, test_visitor_in_alternate);
|
||||
input_visitor_test_add("/visitor/input/errors",
|
||||
|
|
|
@ -352,6 +352,62 @@ static void test_visitor_out_union_flat(TestOutputVisitorData *data,
|
|||
qapi_free_UserDefFlatUnion(tmp);
|
||||
}
|
||||
|
||||
static void test_visitor_out_union_in_union(TestOutputVisitorData *data,
|
||||
const void *unused)
|
||||
{
|
||||
QDict *qdict;
|
||||
|
||||
TestUnionInUnion *tmp = g_new0(TestUnionInUnion, 1);
|
||||
tmp->type = TEST_UNION_ENUM_VALUE_A;
|
||||
tmp->u.value_a.type_a = TEST_UNION_ENUMA_VALUE_A1;
|
||||
tmp->u.value_a.u.value_a1.integer = 42;
|
||||
tmp->u.value_a.u.value_a1.name = g_strdup("fish");
|
||||
|
||||
visit_type_TestUnionInUnion(data->ov, NULL, &tmp, &error_abort);
|
||||
qdict = qobject_to(QDict, visitor_get(data));
|
||||
g_assert(qdict);
|
||||
g_assert_cmpstr(qdict_get_str(qdict, "type"), ==, "value-a");
|
||||
g_assert_cmpstr(qdict_get_str(qdict, "type-a"), ==, "value-a1");
|
||||
g_assert_cmpint(qdict_get_int(qdict, "integer"), ==, 42);
|
||||
g_assert_cmpstr(qdict_get_str(qdict, "name"), ==, "fish");
|
||||
|
||||
qapi_free_TestUnionInUnion(tmp);
|
||||
|
||||
|
||||
visitor_reset(data);
|
||||
tmp = g_new0(TestUnionInUnion, 1);
|
||||
tmp->type = TEST_UNION_ENUM_VALUE_A;
|
||||
tmp->u.value_a.type_a = TEST_UNION_ENUMA_VALUE_A2;
|
||||
tmp->u.value_a.u.value_a2.integer = 1729;
|
||||
tmp->u.value_a.u.value_a2.size = 87539319;
|
||||
|
||||
visit_type_TestUnionInUnion(data->ov, NULL, &tmp, &error_abort);
|
||||
qdict = qobject_to(QDict, visitor_get(data));
|
||||
g_assert(qdict);
|
||||
g_assert_cmpstr(qdict_get_str(qdict, "type"), ==, "value-a");
|
||||
g_assert_cmpstr(qdict_get_str(qdict, "type-a"), ==, "value-a2");
|
||||
g_assert_cmpint(qdict_get_int(qdict, "integer"), ==, 1729);
|
||||
g_assert_cmpint(qdict_get_int(qdict, "size"), ==, 87539319);
|
||||
|
||||
qapi_free_TestUnionInUnion(tmp);
|
||||
|
||||
|
||||
visitor_reset(data);
|
||||
tmp = g_new0(TestUnionInUnion, 1);
|
||||
tmp->type = TEST_UNION_ENUM_VALUE_B;
|
||||
tmp->u.value_b.integer = 1729;
|
||||
tmp->u.value_b.onoff = true;
|
||||
|
||||
visit_type_TestUnionInUnion(data->ov, NULL, &tmp, &error_abort);
|
||||
qdict = qobject_to(QDict, visitor_get(data));
|
||||
g_assert(qdict);
|
||||
g_assert_cmpstr(qdict_get_str(qdict, "type"), ==, "value-b");
|
||||
g_assert_cmpint(qdict_get_int(qdict, "integer"), ==, 1729);
|
||||
g_assert_cmpint(qdict_get_bool(qdict, "onoff"), ==, true);
|
||||
|
||||
qapi_free_TestUnionInUnion(tmp);
|
||||
}
|
||||
|
||||
static void test_visitor_out_alternate(TestOutputVisitorData *data,
|
||||
const void *unused)
|
||||
{
|
||||
|
@ -586,6 +642,8 @@ int main(int argc, char **argv)
|
|||
&out_visitor_data, test_visitor_out_list_qapi_free);
|
||||
output_visitor_test_add("/visitor/output/union-flat",
|
||||
&out_visitor_data, test_visitor_out_union_flat);
|
||||
output_visitor_test_add("/visitor/output/union-in-union",
|
||||
&out_visitor_data, test_visitor_out_union_in_union);
|
||||
output_visitor_test_add("/visitor/output/alternate",
|
||||
&out_visitor_data, test_visitor_out_alternate);
|
||||
output_visitor_test_add("/visitor/output/null",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue