You need to sign in or sign up before continuing.
提交 9e9eace8 编写于 作者: P Paolo Bonzini 提交者: Luiz Capitulino

qapi: add struct-errors test case to test-qmp-output-visitor

This test case verifies that invalid native enums are caught, and causes
qapi to tear down the QObject tree under construction, exercising the
previous patch.
Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: NLaszlo Ersek <lersek@redhat.com>
Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
上级 f24582d6
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
# for testing nested structs # for testing nested structs
{ 'type': 'UserDefOne', { 'type': 'UserDefOne',
'data': { 'integer': 'int', 'string': 'str' } } 'data': { 'integer': 'int', 'string': 'str', '*enum1': 'EnumOne' } }
{ 'type': 'UserDefTwo', { 'type': 'UserDefTwo',
'data': { 'string': 'str', 'data': { 'string': 'str',
......
...@@ -274,6 +274,24 @@ static void test_visitor_out_struct_nested(TestOutputVisitorData *data, ...@@ -274,6 +274,24 @@ static void test_visitor_out_struct_nested(TestOutputVisitorData *data,
qapi_free_UserDefNested(ud2); qapi_free_UserDefNested(ud2);
} }
static void test_visitor_out_struct_errors(TestOutputVisitorData *data,
const void *unused)
{
EnumOne bad_values[] = { ENUM_ONE_MAX, -1 };
UserDefOne u = { 0 }, *pu = &u;
Error *errp;
int i;
for (i = 0; i < ARRAY_SIZE(bad_values) ; i++) {
errp = NULL;
u.has_enum1 = true;
u.enum1 = bad_values[i];
visit_type_UserDefOne(data->ov, &pu, "unused", &errp);
g_assert(error_is_set(&errp) == true);
error_free(errp);
}
}
typedef struct TestStructList typedef struct TestStructList
{ {
TestStruct *value; TestStruct *value;
...@@ -444,6 +462,8 @@ int main(int argc, char **argv) ...@@ -444,6 +462,8 @@ int main(int argc, char **argv)
&out_visitor_data, test_visitor_out_struct); &out_visitor_data, test_visitor_out_struct);
output_visitor_test_add("/visitor/output/struct-nested", output_visitor_test_add("/visitor/output/struct-nested",
&out_visitor_data, test_visitor_out_struct_nested); &out_visitor_data, test_visitor_out_struct_nested);
output_visitor_test_add("/visitor/output/struct-errors",
&out_visitor_data, test_visitor_out_struct_errors);
output_visitor_test_add("/visitor/output/list", output_visitor_test_add("/visitor/output/list",
&out_visitor_data, test_visitor_out_list); &out_visitor_data, test_visitor_out_list);
output_visitor_test_add("/visitor/output/list-qapi-free", output_visitor_test_add("/visitor/output/list-qapi-free",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册