diff options
author | Bruno Haible <bruno@clisp.org> | 2021-08-30 01:56:46 +0200 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2021-08-30 01:56:46 +0200 |
commit | dec35a21ca3440cdaa4057557b2793b4b3aebf39 (patch) | |
tree | 9c6f11cb757f7e52a7fb240c67cb6773b60acd99 | |
parent | 1968e3a57ac44a8e782de06454a6b7df4e4a4c33 (diff) | |
download | gnulib-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-- | ChangeLog | 12 | ||||
-rw-r--r-- | modules/posix_spawn_file_actions_addfchdir-tests | 2 | ||||
-rw-r--r-- | tests/test-posix_spawn-fchdir.c | 35 |
3 files changed, 38 insertions, 11 deletions
@@ -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; } |