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: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH v2 13/23] tests: Clean up string interpolation around qtest_qmp_device_add()
Date: Mon, 30 Jul 2018 08:04:05 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)

Eric Blake <address@hidden> writes:

> 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/

Fixing...

>>    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'.

Good catch.

It passes, because the value of "shm" is an arbitrary file name under
/dev/shm/.

> (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>

Thanks!



reply via email to

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