aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2017-03-03 13:32:45 +0100
committerMarkus Armbruster <armbru@redhat.com>2017-03-05 09:14:20 +0100
commita4a1c70dc759e5b81627e96564f344ab43ea86eb (patch)
tree56d44358c6e76c57a01aed7ee789b68965dcc2ff /tests
parent86ca0dbe04d8eeebf460b56111c9af125e14528f (diff)
qapi: Make input visitors detect unvisited list tails
Fix the design flaw demonstrated in the previous commit: new method check_list() lets input visitors report that unvisited input remains for a list, exactly like check_struct() lets them report that unvisited input remains for a struct or union. Implement the method for the qobject input visitor (straightforward), and the string input visitor (less so, due to the magic list syntax there). The opts visitor's list magic is even more impenetrable, and all I can do there today is a stub with a FIXME comment. No worse than before. Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <1488544368-30622-26-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/test-opts-visitor.c2
-rw-r--r--tests/test-qobject-input-visitor.c9
-rw-r--r--tests/test-string-input-visitor.c4
3 files changed, 11 insertions, 4 deletions
diff --git a/tests/test-opts-visitor.c b/tests/test-opts-visitor.c
index d0f764699b..b93fd330a8 100644
--- a/tests/test-opts-visitor.c
+++ b/tests/test-opts-visitor.c
@@ -199,8 +199,8 @@ test_opts_range_unvisited(void)
g_assert_cmpint(tail->value, ==, 1);
tail = (intList *)visit_next_list(v, (GenericList *)tail, sizeof(*list));
g_assert(tail);
+ visit_check_list(v, &error_abort); /* BUG: unvisited tail not reported */
visit_end_list(v, (void **)&list);
- /* BUG: unvisited tail not reported; actually not reportable by design */
visit_check_struct(v, &error_abort);
visit_end_struct(v, NULL);
diff --git a/tests/test-qobject-input-visitor.c b/tests/test-qobject-input-visitor.c
index 9f3a826353..87d4a77e4a 100644
--- a/tests/test-qobject-input-visitor.c
+++ b/tests/test-qobject-input-visitor.c
@@ -933,6 +933,7 @@ static void test_visitor_in_fail_list(TestInputVisitorData *data,
const void *unused)
{
int64_t i64 = -1;
+ Error *err = NULL;
Visitor *v;
/* Unvisited list tail */
@@ -944,14 +945,16 @@ static void test_visitor_in_fail_list(TestInputVisitorData *data,
g_assert_cmpint(i64, ==, 1);
visit_type_int(v, NULL, &i64, &error_abort);
g_assert_cmpint(i64, ==, 2);
+ visit_check_list(v, &err);
+ error_free_or_abort(&err);
visit_end_list(v, NULL);
- /* BUG: unvisited tail not reported; actually not reportable by design */
}
static void test_visitor_in_fail_list_nested(TestInputVisitorData *data,
const void *unused)
{
int64_t i64 = -1;
+ Error *err = NULL;
Visitor *v;
/* Unvisited nested list tail */
@@ -964,8 +967,10 @@ static void test_visitor_in_fail_list_nested(TestInputVisitorData *data,
visit_start_list(v, NULL, NULL, 0, &error_abort);
visit_type_int(v, NULL, &i64, &error_abort);
g_assert_cmpint(i64, ==, 1);
+ visit_check_list(v, &err);
+ error_free_or_abort(&err);
visit_end_list(v, NULL);
- /* BUG: unvisited tail not reported; actually not reportable by design */
+ visit_check_list(v, &error_abort);
visit_end_list(v, NULL);
}
diff --git a/tests/test-string-input-visitor.c b/tests/test-string-input-visitor.c
index 70cee65cd0..fbe380acbe 100644
--- a/tests/test-string-input-visitor.c
+++ b/tests/test-string-input-visitor.c
@@ -169,8 +169,10 @@ static void test_visitor_in_intList(TestInputVisitorData *data,
g_assert_cmpint(tail->value, ==, 2);
tail = (int64List *)visit_next_list(v, (GenericList *)tail, sizeof(*res));
g_assert(tail);
+
+ visit_check_list(v, &err);
+ error_free_or_abort(&err);
visit_end_list(v, (void **)&res);
- /* BUG: unvisited tail not reported; actually not reportable by design */
qapi_free_int64List(res);
}