+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.
#include <sys/wait.h>
#include "findprog.h"
+#include "qemu.h"
+
+static bool is_qemu;
static int
fd_safer (int fd)
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;
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;
}