Commit 9e9eace8 authored by Paolo Bonzini's avatar Paolo Bonzini Committed by Luiz Capitulino
Browse files

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: default avatarPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarLaszlo Ersek <lersek@redhat.com>
Signed-off-by: default avatarLuiz Capitulino <lcapitulino@redhat.com>
parent f24582d6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@

# for testing nested structs
{ 'type': 'UserDefOne',
  'data': { 'integer': 'int', 'string': 'str' } }
  'data': { 'integer': 'int', 'string': 'str', '*enum1': 'EnumOne' } }

{ 'type': 'UserDefTwo',
  'data': { 'string': 'str',
+20 −0
Original line number Diff line number Diff line
@@ -274,6 +274,24 @@ static void test_visitor_out_struct_nested(TestOutputVisitorData *data,
    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
{
    TestStruct *value;
@@ -444,6 +462,8 @@ int main(int argc, char **argv)
                            &out_visitor_data, test_visitor_out_struct);
    output_visitor_test_add("/visitor/output/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",
                            &out_visitor_data, test_visitor_out_list);
    output_visitor_test_add("/visitor/output/list-qapi-free",