diff --git a/tests/ide-test.c b/tests/ide-test.c index 33cef61e1f09b36999c9e62d0e738307c496e04e..f0280e636b5d0d62615281fbaba121a2720c0f4c 100644 --- a/tests/ide-test.c +++ b/tests/ide-test.c @@ -142,6 +142,10 @@ static void ide_test_start(const char *cmdline_fmt, ...) static void ide_test_quit(void) { + if (pcibus) { + qpci_free_pc(pcibus); + pcibus = NULL; + } pc_alloc_uninit(guest_malloc); guest_malloc = NULL; qtest_end(); diff --git a/tests/libqtest.c b/tests/libqtest.c index 44ce118cfcb86f831fa6a89009903d4acabb73b0..75e07e16e7e5366fde1fab80ce3b76bfd4916c85 100644 --- a/tests/libqtest.c +++ b/tests/libqtest.c @@ -215,24 +215,28 @@ QTestState *qtest_init_without_qmp_handshake(bool use_oob, qtest_add_abrt_handler(kill_qemu_hook_func, s); + command = g_strdup_printf("exec %s " + "-qtest unix:%s,nowait " + "-qtest-log %s " + "-chardev socket,path=%s,nowait,id=char0 " + "-mon chardev=char0,mode=control%s " + "-machine accel=qtest " + "-display none " + "%s", qemu_binary, socket_path, + getenv("QTEST_LOG") ? "/dev/fd/2" : "/dev/null", + qmp_socket_path, use_oob ? ",x-oob=on" : "", + extra_args ?: ""); + + g_test_message("starting QEMU: %s", command); + s->qemu_pid = fork(); if (s->qemu_pid == 0) { setenv("QEMU_AUDIO_DRV", "none", true); - command = g_strdup_printf("exec %s " - "-qtest unix:%s,nowait " - "-qtest-log %s " - "-chardev socket,path=%s,nowait,id=char0 " - "-mon chardev=char0,mode=control%s " - "-machine accel=qtest " - "-display none " - "%s", qemu_binary, socket_path, - getenv("QTEST_LOG") ? "/dev/fd/2" : "/dev/null", - qmp_socket_path, use_oob ? ",x-oob=on" : "", - extra_args ?: ""); execlp("/bin/sh", "sh", "-c", command, NULL); exit(1); } + g_free(command); s->fd = socket_accept(sock); if (s->fd >= 0) { s->qmp_fd = socket_accept(qmpsock); diff --git a/tests/qmp-test.c b/tests/qmp-test.c index 6c419f6023abdb4e29e47cf49e6d11a46c2c8c5e..7517be46544bd1dee00d6406ea491a16c2ac6a1e 100644 --- a/tests/qmp-test.c +++ b/tests/qmp-test.c @@ -318,6 +318,19 @@ static void test_qmp_preconfig(void) qtest_quit(qs); } +static void test_qmp_missing_any_arg(void) +{ + QTestState *qts; + QDict *resp; + + qts = qtest_init(common_args); + resp = qtest_qmp(qts, "{'execute': 'qom-set', 'arguments':" + " { 'path': '/machine', 'property': 'rtc-time' } }"); + g_assert_nonnull(resp); + qmp_assert_error_class(resp, "GenericError"); + qtest_quit(qts); +} + int main(int argc, char *argv[]) { g_test_init(&argc, &argv, NULL); @@ -325,6 +338,7 @@ int main(int argc, char *argv[]) qtest_add_func("qmp/protocol", test_qmp_protocol); qtest_add_func("qmp/oob", test_qmp_oob); qtest_add_func("qmp/preconfig", test_qmp_preconfig); + qtest_add_func("qmp/missing-any-arg", test_qmp_missing_any_arg); return g_test_run(); }