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 |
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~
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
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 --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; }