|
From: | Eric Blake |
Subject: | Re: [Qemu-devel] [PATCH v2 13/23] tests: Clean up string interpolation around qtest_qmp_device_add() |
Date: | Fri, 27 Jul 2018 10:48:33 -0500 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 |
On 07/27/2018 10:13 AM, Markus Armbruster wrote:
Leaving interpolation into JSON to qmp() is more robust than building QMP input manually, as explained in the commit before previous. qtest_qmp_device_add() and its wrappers interpolate into JSON as follows: * qtest_qmp_device_add() interpolates members into a JSON object. * So do its wrappers qpci_plug_device_test() and usb_test_hotplug(). * usb_test_hotplug() additionally interpolates strings and numbers into JSON strings. Clean them up: * Have qtest_qmp_device_add() take its extra device properties as arguments for for qdict_from_jsonf_nofail() instead of a string
s/for for/for/
containing JSON members. * Drop qpci_plug_device_test(), use qtest_qmp_device_add() directly. * Change usb_test_hotplug() parameter @port to string, to avoid interpolation. Interpolate @hcd_id separately. Bonus: gets rid of a non-literal format string. A step towards compile-time format string checking without triggering -Wformat-nonliteral. Cc: Thomas Huth <address@hidden> Signed-off-by: Markus Armbruster <address@hidden> ---
+++ b/tests/ivshmem-test.c @@ -420,19 +420,17 @@ static void test_ivshmem_server_irq(void) static void test_ivshmem_hotplug(void) { const char *arch = qtest_get_arch(); - gchar *opts;qtest_start(""); - opts = g_strdup_printf("'shm': '%s', 'size': '1M'", tmpshm);- - qpci_plug_device_test("ivshmem", "iv1", PCI_SLOT_HP, opts); + qtest_qmp_device_add("ivshmem", + "iv1", "{'addr': %s, 'shm': '%s', 'size': '1M'}",
Umm, how does this still pass? You want 'shm':%s, not 'shm':'%s'.(We really want to assert that any % interpolations in our JSON parser are NOT embedded in '').
With that error fixed, Reviewed-by: Eric Blake <address@hidden> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
[Prev in Thread] | Current Thread | [Next in Thread] |