qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 13/23] tests: Clean up string interpolation a


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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]