qemu-block
[Top][All Lists]
Advanced

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

Re: [PATCH 33/51] tests/qtest: {ahci, ide}-test: Use relative path for t


From: Bin Meng
Subject: Re: [PATCH 33/51] tests/qtest: {ahci, ide}-test: Use relative path for temporary files
Date: Sat, 3 Sep 2022 21:30:38 +0800

On Thu, Sep 1, 2022 at 4:58 PM Marc-André Lureau
<marcandre.lureau@gmail.com> wrote:
>
>
>
> On Wed, Aug 24, 2022 at 2:55 PM Bin Meng <bmeng.cn@gmail.com> wrote:
>>
>> From: Bin Meng <bin.meng@windriver.com>
>>
>> These test cases uses "blkdebug:path/to/config:path/to/image" for
>> testing. On Windows, absolute file paths contain the delimiter ':'
>> which causes the blkdebug filename parser fail to parse filenames.
>>
>
> hmm.. maybe it should learn to escape paths..
>
>
>> Signed-off-by: Bin Meng <bin.meng@windriver.com>
>> ---
>>
>>  tests/qtest/ahci-test.c | 19 ++++++++++++++++---
>>  tests/qtest/ide-test.c  | 18 ++++++++++++++++--
>>  2 files changed, 32 insertions(+), 5 deletions(-)
>>
>> diff --git a/tests/qtest/ahci-test.c b/tests/qtest/ahci-test.c
>> index 0e88cd0eef..bce9ff770c 100644
>> --- a/tests/qtest/ahci-test.c
>> +++ b/tests/qtest/ahci-test.c
>> @@ -1848,7 +1848,7 @@ static void create_ahci_io_test(enum IOMode type, enum 
>> AddrMode addr,
>>
>>  int main(int argc, char **argv)
>>  {
>> -    const char *arch;
>> +    const char *arch, *base;
>>      int ret;
>>      int fd;
>>      int c;
>> @@ -1886,8 +1886,21 @@ int main(int argc, char **argv)
>>          return 0;
>>      }
>>
>> +    /*
>> +     * "base" stores the starting point where we create temporary files.
>> +     *
>> +     * On Windows, this is set to the relative path of current working
>> +     * directory, because the absolute path causes the blkdebug filename
>> +     * parser fail to parse "blkdebug:path/to/config:path/to/image".
>> +     */
>> +#ifndef _WIN32
>> +    base = g_get_tmp_dir();
>> +#else
>> +    base = ".";
>> +#endif
>
>
> Meanwhile, that seems reasonable. Perhaps chdir() to the temporary directory 
> first? (assuming other paths are absolute)

Other paths in the QEMU command line indeed are absolute, however the
QEMU executable path is set to a relative path from meson.build thus
we cannot chdir() to the temporary directory here.

>
>>
>> +
>>      /* Create a temporary image */
>> -    tmp_path = g_strdup_printf("%s/qtest.XXXXXX", g_get_tmp_dir());
>> +    tmp_path = g_strdup_printf("%s/qtest.XXXXXX", base);
>>      fd = mkstemp(tmp_path);
>>      g_assert(fd >= 0);
>>      if (have_qemu_img()) {
>> @@ -1905,7 +1918,7 @@ int main(int argc, char **argv)
>>      close(fd);
>>
>>      /* Create temporary blkdebug instructions */
>> -    debug_path = g_strdup_printf("%s/qtest-blkdebug.XXXXXX", 
>> g_get_tmp_dir());
>> +    debug_path = g_strdup_printf("%s/qtest-blkdebug.XXXXXX", base);
>>      fd = mkstemp(debug_path);
>>      g_assert(fd >= 0);
>>      close(fd);
>> diff --git a/tests/qtest/ide-test.c b/tests/qtest/ide-test.c
>> index ebbf8e0126..c5cad6c0be 100644
>> --- a/tests/qtest/ide-test.c
>> +++ b/tests/qtest/ide-test.c
>> @@ -1011,17 +1011,31 @@ static void test_cdrom_dma(void)
>>
>>  int main(int argc, char **argv)
>>  {
>> +    const char *base;
>>      int fd;
>>      int ret;
>>
>> +    /*
>> +     * "base" stores the starting point where we create temporary files.
>> +     *
>> +     * On Windows, this is set to the relative path of current working
>> +     * directory, because the absolute path causes the blkdebug filename
>> +     * parser fail to parse "blkdebug:path/to/config:path/to/image".
>> +     */
>> +#ifndef _WIN32
>> +    base = g_get_tmp_dir();
>> +#else
>> +    base = ".";
>> +#endif
>> +
>>      /* Create temporary blkdebug instructions */
>> -    debug_path = g_strdup_printf("%s/qtest-blkdebug.XXXXXX", 
>> g_get_tmp_dir());
>> +    debug_path = g_strdup_printf("%s/qtest-blkdebug.XXXXXX", base);
>>      fd = mkstemp(debug_path);
>>      g_assert(fd >= 0);
>>      close(fd);
>>
>>      /* Create a temporary raw image */
>> -    tmp_path = g_strdup_printf("%s/qtest.XXXXXX", g_get_tmp_dir());
>> +    tmp_path = g_strdup_printf("%s/qtest.XXXXXX", base);
>>      fd = mkstemp(tmp_path);
>>      g_assert(fd >= 0);
>>      ret = ftruncate(fd, TEST_IMAGE_SIZE);
>> --
>> 2.34.1

Regards,
Bin



reply via email to

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