summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2021-08-30 01:56:46 +0200
committerBruno Haible <bruno@clisp.org>2021-08-30 01:56:46 +0200
commitdec35a21ca3440cdaa4057557b2793b4b3aebf39 (patch)
tree9c6f11cb757f7e52a7fb240c67cb6773b60acd99
parent1968e3a57ac44a8e782de06454a6b7df4e4a4c33 (diff)
downloadgnulib-dec35a21ca3440cdaa4057557b2793b4b3aebf39.tar.gz
posix_spawn_file_actions_addfchdir: Avoid test failure under QEMU.
* tests/test-posix_spawn-fchdir.c: Include qemu.h. (is_qemu): New variable. (test): Under QEMU user-mode, don't expect that "pwd" produces the result "/". (main): Initialize is_qemu. Under QEMU user-mode, skip the relative file name test. * modules/posix_spawn_file_actions_addfchdir-tests (Files): Add qemu.h. (Depends-on): Add stdbool.
-rw-r--r--ChangeLog12
-rw-r--r--modules/posix_spawn_file_actions_addfchdir-tests2
-rw-r--r--tests/test-posix_spawn-fchdir.c35
3 files changed, 38 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 88a396e09e..511765e126 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
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.
+ (test): Under QEMU user-mode, don't expect that "pwd" produces the
+ result "/".
+ (main): Initialize is_qemu. Under QEMU user-mode, skip the relative file
+ name test.
+ * modules/posix_spawn_file_actions_addfchdir-tests (Files): Add qemu.h.
+ (Depends-on): Add stdbool.
+
+2021-08-29 Bruno Haible <bruno@clisp.org>
+
getcwd tests: Avoid test failure when running under QEMU user-mode.
* modules/getcwd-tests (Files): Add qemu.h.
(Depends-on): Add stdbool.
diff --git a/modules/posix_spawn_file_actions_addfchdir-tests b/modules/posix_spawn_file_actions_addfchdir-tests
index 789a85d2e8..903a30f859 100644
--- a/modules/posix_spawn_file_actions_addfchdir-tests
+++ b/modules/posix_spawn_file_actions_addfchdir-tests
@@ -2,12 +2,14 @@ Files:
tests/test-posix_spawn_file_actions_addfchdir.c
tests/test-posix_spawn-fchdir.c
tests/signature.h
+tests/qemu.h
tests/macros.h
Depends-on:
posix_spawn_file_actions_init
posix_spawn_file_actions_destroy
posix_spawnp-tests
+stdbool
findprog
configure.ac:
diff --git a/tests/test-posix_spawn-fchdir.c b/tests/test-posix_spawn-fchdir.c
index 0f71374460..297a2de47d 100644
--- a/tests/test-posix_spawn-fchdir.c
+++ b/tests/test-posix_spawn-fchdir.c
@@ -32,6 +32,9 @@
#include <sys/wait.h>
#include "findprog.h"
+#include "qemu.h"
+
+static bool is_qemu;
static int
fd_safer (int fd)
@@ -135,10 +138,17 @@ test (const char *pwd_prog)
fprintf (stderr, "could not read expected output\n");
exit (1);
}
- if (memcmp (line, "/\n", 2) != 0)
+ /* For a process running under QEMU user-mode, rootfd points to the directory
+ that is the value of the QEMU_LD_PREFIX environment variable or of the -L
+ command-line option, and the line produced by 'pwd' is that directory, not
+ "/". */
+ if (!is_qemu)
{
- fprintf (stderr, "read output is not the expected output\n");
- exit (1);
+ if (memcmp (line, "/\n", 2) != 0)
+ {
+ fprintf (stderr, "read output is not the expected output\n");
+ exit (1);
+ }
}
fclose (fp);
status = 0;
@@ -160,19 +170,22 @@ test (const char *pwd_prog)
int
main ()
{
+ is_qemu = is_running_under_qemu_user ();
+
test ("pwd");
/* Verify that if a program is given as a relative file name with at least one
slash, it is interpreted w.r.t. the current directory after fchdir has been
executed. */
- {
- const char *abs_pwd_prog = find_in_path ("pwd");
-
- if (abs_pwd_prog != NULL
- && abs_pwd_prog[0] == '/'
- && abs_pwd_prog[1] != '0' && abs_pwd_prog[1] != '/')
- test (&abs_pwd_prog[1]);
- }
+ if (!is_qemu)
+ {
+ const char *abs_pwd_prog = find_in_path ("pwd");
+
+ if (abs_pwd_prog != NULL
+ && abs_pwd_prog[0] == '/'
+ && abs_pwd_prog[1] != '0' && abs_pwd_prog[1] != '/')
+ test (&abs_pwd_prog[1]);
+ }
return 0;
}