aboutsummaryrefslogtreecommitdiff
path: root/tests/device-introspect-test.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/device-introspect-test.c')
-rw-r--r--tests/device-introspect-test.c32
1 files changed, 29 insertions, 3 deletions
diff --git a/tests/device-introspect-test.c b/tests/device-introspect-test.c
index a38193b2c7..a25092dfaa 100644
--- a/tests/device-introspect-test.c
+++ b/tests/device-introspect-test.c
@@ -221,13 +221,13 @@ static void test_device_intro_abstract(void)
qtest_end();
}
-static void test_device_intro_concrete(void)
+static void test_device_intro_concrete(const void *args)
{
QList *types;
QListEntry *entry;
const char *type;
- qtest_start(common_args);
+ qtest_start(args);
types = device_type_list(false);
QLIST_FOREACH_ENTRY(types, entry) {
@@ -239,6 +239,7 @@ static void test_device_intro_concrete(void)
qobject_unref(types);
qtest_end();
+ g_free((void *)args);
}
static void test_abstract_interfaces(void)
@@ -275,6 +276,26 @@ static void test_abstract_interfaces(void)
qtest_end();
}
+static void add_machine_test_case(const char *mname)
+{
+ char *path, *args;
+
+ /* Ignore blacklisted machines */
+ if (g_str_equal("xenfv", mname) || g_str_equal("xenpv", mname)) {
+ return;
+ }
+
+ path = g_strdup_printf("device/introspect/concrete/defaults/%s", mname);
+ args = g_strdup_printf("-M %s", mname);
+ qtest_add_data_func(path, args, test_device_intro_concrete);
+ g_free(path);
+
+ path = g_strdup_printf("device/introspect/concrete/nodefaults/%s", mname);
+ args = g_strdup_printf("-nodefaults -M %s", mname);
+ qtest_add_data_func(path, args, test_device_intro_concrete);
+ g_free(path);
+}
+
int main(int argc, char **argv)
{
g_test_init(&argc, &argv, NULL);
@@ -283,8 +304,13 @@ int main(int argc, char **argv)
qtest_add_func("device/introspect/list-fields", test_qom_list_fields);
qtest_add_func("device/introspect/none", test_device_intro_none);
qtest_add_func("device/introspect/abstract", test_device_intro_abstract);
- qtest_add_func("device/introspect/concrete", test_device_intro_concrete);
qtest_add_func("device/introspect/abstract-interfaces", test_abstract_interfaces);
+ if (g_test_quick()) {
+ qtest_add_data_func("device/introspect/concrete/defaults/none",
+ g_strdup(common_args), test_device_intro_concrete);
+ } else {
+ qtest_cb_for_every_machine(add_machine_test_case, true);
+ }
return g_test_run();
}