summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2021-08-30 02:05:53 +0200
committerBruno Haible <bruno@clisp.org>2021-08-30 02:07:45 +0200
commit5d5eba1c0c43e4c9638cb857aa7f3c471ae0deba (patch)
tree8ce792f11b89444052bb841ad3dc4c6a6995b355
parentdec35a21ca3440cdaa4057557b2793b4b3aebf39 (diff)
downloadgnulib-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--ChangeLog8
-rw-r--r--modules/execute-tests2
-rw-r--r--tests/test-execute-child.c12
3 files changed, 21 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 511765e126..76562fea42 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);