The qemu JSON monitor test allows to test also expected command arguments. As the error from the monitor simulator is returned as a simulated qemu error (in JSON) all other JSON contained in the error message needs to be escaped. This will happen if the monitor command under test receives a JSON array as an argument. This will improve the error message from: libvirt: error : internal error: cannot parse json { "error": { "desc": "Invalid value of argument 'keys' of command 'send-key': expected 'ble' got '[{"type":"number","data":43},{"type":"number","data":26}, {"type":"number","data":46},{"type":"number","data":32}]'", "class": "UnexpectedCommand" } }: lexical error: invalid string in json text. To: libvirt: QEMU Driver error : internal error: unable to execute QEMU command 'send-key': Invalid value of argument 'keys' of command 'send-key': expected 'ble' got '[{"type":"number","data":43}, {"type":"number","data":26},{"type":"number","data":46}, {"type":"number","data":32}]' This improvement will not have any effect on tests executing as expected, but it will help test development. --- tests/qemumonitortestutils.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/qemumonitortestutils.c b/tests/qemumonitortestutils.c index 30c2153..8155a69 100644 --- a/tests/qemumonitortestutils.c +++ b/tests/qemumonitortestutils.c @@ -145,6 +145,12 @@ qemuMonitorReportError(qemuMonitorTestPtr test, const char *errmsg, ...) goto cleanup; if (test->agent || test->json) { + char *tmp = msg; + msg = qemuMonitorEscapeArg(tmp); + VIR_FREE(tmp); + if (!msg) + goto cleanup; + if (virAsprintf(&jsonmsg, "{ \"error\": " " { \"desc\": \"%s\", " " \"class\": \"UnexpectedCommand\" } }", -- 1.9.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list