
On Wed, Oct 05, 2016 at 09:37:50 -0400, John Ferlan wrote:
On 09/27/2016 12:39 PM, Peter Krempa wrote:
Add code that takes a string and matches it against the data passed as arguments from qemu. This is a simpler version of qemuMonitorTestAddItemParams. --- tests/qemumonitortestutils.c | 112 +++++++++++++++++++++++++++++++++++++++++++ tests/qemumonitortestutils.h | 6 +++ 2 files changed, 118 insertions(+)
[...]
+/** + * qemuMonitorTestAddItemExpect: + * + * @test: test monitor object + * @cmdname: command name + * @cmdargs: expected arguments of the command + * @apostrophe: convert apostrophes (') in @cmdargs to quotes (") + * @response: simulated response of the command + * + * Simulates a qemu monitor command. Checks that the 'arguments' of the qmp + * command are expected. If @apostrophe is true apostrophes are converted to + * quotes for simplification of writing the strings into code. + */ +int +qemuMonitorTestAddItemExpect(qemuMonitorTestPtr test, + const char *cmdname, + const char *cmdargs, + bool apostrophe, + const char *response) +{ + struct qemuMonitorTestHandlerData *data; + + if (VIR_ALLOC(data) < 0) + goto error; + + if (VIR_STRDUP(data->command_name, cmdname) < 0 || + VIR_STRDUP(data->response, response) < 0 || + VIR_STRDUP(data->expectArgs, cmdargs) < 0) + goto error; + + if (apostrophe) { + char *tmp = data->expectArgs; + + while (*tmp != '\0') { + if (*tmp == '\'') + *tmp = '"'; + + tmp++; + }
Would there ever be a time when apostrophe would be false?
It certainly can be. If you construct a proper JSON string, then basically everything is enclosed in quotes. But those are very hard to do in C code, thus you can cut the corner by using apostrophes. This won't work though if you e.g. want to send a string containing an apostrophe, thus you will need to do it properly and set @apostrophe to false.