diff mbox series

[v5,04/18] tests/qtest: migration-test: Avoid using hardcoded /tmp

Message ID 20221006151927.2079583-5-bmeng.cn@gmail.com (mailing list archive)
State New, archived
Headers show
Series tests/qtest: Enable running qtest on Windows | expand

Commit Message

Bin Meng Oct. 6, 2022, 3:19 p.m. UTC
From: Bin Meng <bin.meng@windriver.com>

This case was written to use hardcoded /tmp directory for temporary
files. Update to use g_dir_make_tmp() for a portable implementation.

Signed-off-by: Bin Meng <bin.meng@windriver.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---

Changes in v5:
- Use g_autoptr(GError)

Changes in v4:
- Update the error reporting by using the GError "error" argument
  of g_dir_make_tmp()
- Remove the const from tmpfs declaration

Changes in v3:
- Split to a separate patch

 tests/qtest/migration-test.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

Comments

Richard Henderson Oct. 25, 2022, 11:44 p.m. UTC | #1
On 10/7/22 01:19, Bin Meng wrote:
> From: Bin Meng <bin.meng@windriver.com>
> 
> This case was written to use hardcoded /tmp directory for temporary
> files. Update to use g_dir_make_tmp() for a portable implementation.
> 
> Signed-off-by: Bin Meng <bin.meng@windriver.com>
> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> 
> Changes in v5:
> - Use g_autoptr(GError)
> 
> Changes in v4:
> - Update the error reporting by using the GError "error" argument
>    of g_dir_make_tmp()
> - Remove the const from tmpfs declaration
> 
> Changes in v3:
> - Split to a separate patch

This patch breaks with gcc 12:


> @@ -2479,9 +2479,10 @@ int main(int argc, char **argv)
>           return g_test_run();
>       }
>   
> -    tmpfs = g_mkdtemp(template);
> +    tmpfs = g_dir_make_tmp("migration-test-XXXXXX", &err);
>       if (!tmpfs) {
> -        g_test_message("g_mkdtemp on path (%s): %s", template, strerror(errno));
> +        g_test_message("g_dir_make_tmp on path (%s): %s", tmpfs,
> +                       err->message);
>       }
>       g_assert(tmpfs);
>   

../src/tests/qtest/migration-test.c: In function ‘main’:
../src/tests/qtest/migration-test.c:2484:49: error: ‘%s’ directive argument is null 
[-Werror=format-overflow=]
  2484 |         g_test_message("g_dir_make_tmp on path (%s): %s", tmpfs,
       |                                                 ^~

The compiler correctly notices that tmpfs was tested and found to be null, but tried to 
print it anyway.


r~
Bin Meng Oct. 26, 2022, 12:44 a.m. UTC | #2
On Wed, Oct 26, 2022 at 7:44 AM Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> On 10/7/22 01:19, Bin Meng wrote:
> > From: Bin Meng <bin.meng@windriver.com>
> >
> > This case was written to use hardcoded /tmp directory for temporary
> > files. Update to use g_dir_make_tmp() for a portable implementation.
> >
> > Signed-off-by: Bin Meng <bin.meng@windriver.com>
> > Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> >
> > Changes in v5:
> > - Use g_autoptr(GError)
> >
> > Changes in v4:
> > - Update the error reporting by using the GError "error" argument
> >    of g_dir_make_tmp()
> > - Remove the const from tmpfs declaration
> >
> > Changes in v3:
> > - Split to a separate patch
>
> This patch breaks with gcc 12:

Weird GCC ...

GCC 9 reported [1], but not GCC 11, and now GCC 12 reported again.

>
>
> > @@ -2479,9 +2479,10 @@ int main(int argc, char **argv)
> >           return g_test_run();
> >       }
> >
> > -    tmpfs = g_mkdtemp(template);
> > +    tmpfs = g_dir_make_tmp("migration-test-XXXXXX", &err);
> >       if (!tmpfs) {
> > -        g_test_message("g_mkdtemp on path (%s): %s", template, strerror(errno));
> > +        g_test_message("g_dir_make_tmp on path (%s): %s", tmpfs,
> > +                       err->message);
> >       }
> >       g_assert(tmpfs);
> >
>
> ../src/tests/qtest/migration-test.c: In function ‘main’:
> ../src/tests/qtest/migration-test.c:2484:49: error: ‘%s’ directive argument is null
> [-Werror=format-overflow=]
>   2484 |         g_test_message("g_dir_make_tmp on path (%s): %s", tmpfs,
>        |                                                 ^~
>
> The compiler correctly notices that tmpfs was tested and found to be null, but tried to
> print it anyway.
>

Patch [1] already queued in qemu-trivial

[1] http://patchwork.ozlabs.org/project/qemu-devel/patch/20221017132023.2228641-1-bmeng.cn@gmail.com/

Regards,
Bin
Richard Henderson Oct. 26, 2022, 1:25 a.m. UTC | #3
On 10/26/22 10:44, Bin Meng wrote:
>> ../src/tests/qtest/migration-test.c: In function ‘main’:
>> ../src/tests/qtest/migration-test.c:2484:49: error: ‘%s’ directive argument is null
>> [-Werror=format-overflow=]
>>    2484 |         g_test_message("g_dir_make_tmp on path (%s): %s", tmpfs,
>>         |                                                 ^~
>>
>> The compiler correctly notices that tmpfs was tested and found to be null, but tried to
>> print it anyway.
>>
> 
> Patch [1] already queued in qemu-trivial
> 
> [1] http://patchwork.ozlabs.org/project/qemu-devel/patch/20221017132023.2228641-1-bmeng.cn@gmail.com/

Oh, excellent, thanks.

r~
diff mbox series

Patch

diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c
index 0d153d6b5e..ef4427ff4d 100644
--- a/tests/qtest/migration-test.c
+++ b/tests/qtest/migration-test.c
@@ -102,7 +102,7 @@  static bool ufd_version_check(void)
 
 #endif
 
-static const char *tmpfs;
+static char *tmpfs;
 
 /* The boot file modifies memory area in [start_address, end_address)
  * repeatedly. It outputs a 'B' at a fixed rate while it's still running.
@@ -2451,10 +2451,10 @@  static bool kvm_dirty_ring_supported(void)
 
 int main(int argc, char **argv)
 {
-    char template[] = "/tmp/migration-test-XXXXXX";
     const bool has_kvm = qtest_has_accel("kvm");
     const bool has_uffd = ufd_version_check();
     const char *arch = qtest_get_arch();
+    g_autoptr(GError) err = NULL;
     int ret;
 
     g_test_init(&argc, &argv, NULL);
@@ -2479,9 +2479,10 @@  int main(int argc, char **argv)
         return g_test_run();
     }
 
-    tmpfs = g_mkdtemp(template);
+    tmpfs = g_dir_make_tmp("migration-test-XXXXXX", &err);
     if (!tmpfs) {
-        g_test_message("g_mkdtemp on path (%s): %s", template, strerror(errno));
+        g_test_message("g_dir_make_tmp on path (%s): %s", tmpfs,
+                       err->message);
     }
     g_assert(tmpfs);
 
@@ -2612,6 +2613,7 @@  int main(int argc, char **argv)
         g_test_message("unable to rmdir: path (%s): %s",
                        tmpfs, strerror(errno));
     }
+    g_free(tmpfs);
 
     return ret;
 }