diff options
author | Bruno Haible <bruno@clisp.org> | 2021-08-30 02:05:53 +0200 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2021-08-30 02:07:45 +0200 |
commit | 5d5eba1c0c43e4c9638cb857aa7f3c471ae0deba (patch) | |
tree | 8ce792f11b89444052bb841ad3dc4c6a6995b355 | |
parent | dec35a21ca3440cdaa4057557b2793b4b3aebf39 (diff) | |
download | gnulib-5d5eba1c0c43e4c9638cb857aa7f3c471ae0deba.tar.gz |
execute: Fix test failure when running under QEMU user-mode.
* tests/test-execute-child.c: Include <stdbool.h>, qemu.h.
(main): Under QEMU user-mode, allow fd 3 to be open.
* modules/execute-tests (Files): Add qemu.h.
(Depends-on): Add stdbool.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | modules/execute-tests | 2 | ||||
-rw-r--r-- | tests/test-execute-child.c | 12 |
3 files changed, 21 insertions, 1 deletions
@@ -1,5 +1,13 @@ 2021-08-29 Bruno Haible <bruno@clisp.org> + execute: Fix test failure when running under QEMU user-mode. + * tests/test-execute-child.c: Include <stdbool.h>, qemu.h. + (main): Under QEMU user-mode, allow fd 3 to be open. + * modules/execute-tests (Files): Add qemu.h. + (Depends-on): Add stdbool. + +2021-08-29 Bruno Haible <bruno@clisp.org> + posix_spawn_file_actions_addfchdir: Avoid test failure under QEMU. * tests/test-posix_spawn-fchdir.c: Include qemu.h. (is_qemu): New variable. diff --git a/modules/execute-tests b/modules/execute-tests index 735f55c94d..14d48676c5 100644 --- a/modules/execute-tests +++ b/modules/execute-tests @@ -6,6 +6,7 @@ tests/test-execute-script.c tests/executable-script tests/executable-script.sh tests/executable-shell-script +tests/qemu.h tests/macros.h Depends-on: @@ -14,6 +15,7 @@ fcntl mkdir msvc-inval read-file +stdbool stdint unistd diff --git a/tests/test-execute-child.c b/tests/test-execute-child.c index dbaae1e962..481e50f348 100644 --- a/tests/test-execute-child.c +++ b/tests/test-execute-child.c @@ -41,6 +41,7 @@ is_device (int fd) /* Now include the other header files. */ #include <fcntl.h> #include <signal.h> +#include <stdbool.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> @@ -57,6 +58,7 @@ is_device (int fd) /* In this file, we use only system functions, no overrides from gnulib. */ #undef atoi +#undef close #undef fcntl #undef fflush #undef fgetc @@ -64,13 +66,18 @@ is_device (int fd) #undef fputs #undef getcwd #undef isatty +#undef open #undef raise #undef read #undef sprintf +#undef strcasestr #undef strcmp #undef strlen +#undef strstr #undef write +#include "qemu.h" + #if HAVE_MSVC_INVALID_PARAMETER_HANDLER static void __cdecl gl_msvc_invalid_parameter_handler (const wchar_t *expression, @@ -166,12 +173,15 @@ main (int argc, char *argv[]) _set_invalid_parameter_handler (gl_msvc_invalid_parameter_handler); #endif { + /* QEMU 6.1 in user-mode passes an open fd = 3, that references + /dev/urandom. We need to ignore this fd. */ + bool is_qemu = is_running_under_qemu_user (); char buf[300]; buf[0] = '\0'; char *p = buf; int fd; for (fd = 0; fd < 20; fd++) - if (is_open (fd)) + if (is_open (fd) && !(is_qemu && fd == 3)) { sprintf (p, "%d ", fd); p += strlen (p); |