summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPeter Maydell2014-05-28 19:38:38 +0200
committerPeter Maydell2014-05-28 19:38:39 +0200
commitd7d3d6092cb7edc75dc49fb90c86dd5425ab4805 (patch)
treeea3820e7a4e5f51bd1b7b51003546ebb70486b70 /tests
parentMerge remote-tracking branch 'remotes/rth/tcg-next' into staging (diff)
parentssi: Name the CS GPIO (diff)
downloadqemu-d7d3d6092cb7edc75dc49fb90c86dd5425ab4805.tar.gz
qemu-d7d3d6092cb7edc75dc49fb90c86dd5425ab4805.tar.xz
qemu-d7d3d6092cb7edc75dc49fb90c86dd5425ab4805.zip
Merge remote-tracking branch 'remotes/afaerber/tags/qom-devices-for-peter' into staging
QOM/QTest infrastructure fixes and device conversions * qom-test extension * QEMUMachineInitArgs conversion to MachineState * -machine options turned into /machine properties * Named GPIO IRQs for devices # gpg: Signature made Wed 28 May 2014 18:24:04 BST using RSA key ID 3E7E013F # gpg: Can't check signature: public key not found * remotes/afaerber/tags/qom-devices-for-peter: ssi: Name the CS GPIO qdev: Implement named GPIOs machine: Make -machine opts properties of MachineState tests: Check empty QMP output visitor qapi: Avoid output visitor crashing if it encounters a NULL value vl.c: Do not set 'type' property in obj_set_property() machine: Conversion of QEMUMachineInitArgs to MachineState qom-test: Test qom-list on link<> properties Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/qom-test.c15
-rw-r--r--tests/test-qmp-output-visitor.c11
2 files changed, 22 insertions, 4 deletions
diff --git a/tests/qom-test.c b/tests/qom-test.c
index 6d9a00b448..d8d1d8d9ff 100644
--- a/tests/qom-test.c
+++ b/tests/qom-test.c
@@ -44,7 +44,7 @@ static bool is_blacklisted(const char *arch, const char *mach)
return false;
}
-static void test_properties(const char *path)
+static void test_properties(const char *path, bool recurse)
{
char *child_path;
QDict *response, *tuple;
@@ -56,14 +56,21 @@ static void test_properties(const char *path)
" 'arguments': { 'path': '%s' } }", path);
g_assert(response);
+ if (!recurse) {
+ return;
+ }
+
g_assert(qdict_haskey(response, "return"));
list = qobject_to_qlist(qdict_get(response, "return"));
QLIST_FOREACH_ENTRY(list, entry) {
tuple = qobject_to_qdict(qlist_entry_obj(entry));
- if (strstart(qdict_get_str(tuple, "type"), "child<", NULL)) {
+ bool is_child = strstart(qdict_get_str(tuple, "type"), "child<", NULL);
+ bool is_link = strstart(qdict_get_str(tuple, "type"), "link<", NULL);
+
+ if (is_child || is_link) {
child_path = g_strdup_printf("%s/%s",
path, qdict_get_str(tuple, "name"));
- test_properties(child_path);
+ test_properties(child_path, is_child);
g_free(child_path);
} else {
const char *prop = qdict_get_str(tuple, "name");
@@ -87,7 +94,7 @@ static void test_machine(gconstpointer data)
args = g_strdup_printf("-machine %s", machine);
qtest_start(args);
- test_properties("/machine");
+ test_properties("/machine", true);
response = qmp("{ 'execute': 'quit' }");
g_assert(qdict_haskey(response, "return"));
diff --git a/tests/test-qmp-output-visitor.c b/tests/test-qmp-output-visitor.c
index 9c154581d7..74020de5e7 100644
--- a/tests/test-qmp-output-visitor.c
+++ b/tests/test-qmp-output-visitor.c
@@ -507,6 +507,15 @@ static void test_visitor_out_union_anon(TestOutputVisitorData *data,
qapi_free_UserDefAnonUnion(tmp);
}
+static void test_visitor_out_empty(TestOutputVisitorData *data,
+ const void *unused)
+{
+ QObject *arg;
+
+ arg = qmp_output_get_qobject(data->qov);
+ g_assert(!arg);
+}
+
static void init_native_list(UserDefNativeListUnion *cvalue)
{
int i;
@@ -859,6 +868,8 @@ int main(int argc, char **argv)
&out_visitor_data, test_visitor_out_union_flat);
output_visitor_test_add("/visitor/output/union-anon",
&out_visitor_data, test_visitor_out_union_anon);
+ output_visitor_test_add("/visitor/output/empty",
+ &out_visitor_data, test_visitor_out_empty);
output_visitor_test_add("/visitor/output/native_list/int",
&out_visitor_data, test_visitor_out_native_list_int);
output_visitor_test_add("/visitor/output/native_list/int8",