While testing a grep snapshot on NetBSD 8, I see that the gnulib test 'test-openat-safer' fails:
FAIL: test-openat-safer ======================= ../../gnulib-tests/test-openat-safer.c:101: assertion 'STDERR_FILENO < fd' failed FAIL test-openat-safer (exit status: 134) The reason is that the test is too strong: It verifies that "Using a bad directory is okay for absolute paths". But this is not guaranteed by POSIX [1] (as far as I understand it). Only the Linux man page specifies this [2]. So let's conditionalize this test. [1] http://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html [2] https://linux.die.net/man/2/openat 2018-12-15 Bruno Haible <br...@clisp.org> openat-safer tests: Avoid test failure on NetBSD 8. * tests/test-openat-safer.c (main): Execute a Linux specific test only on Linux. diff --git a/tests/test-openat-safer.c b/tests/test-openat-safer.c index e8977e4..4711a8e 100644 --- a/tests/test-openat-safer.c +++ b/tests/test-openat-safer.c @@ -96,11 +96,15 @@ main (void) errno = 0; ASSERT (openat (dfd, witness "/", O_RDONLY) == -1); ASSERT (errno == ENOTDIR || errno == EISDIR || errno == EINVAL); +#ifdef __linux__ /* Using a bad directory is okay for absolute paths. */ fd = openat (-1, "/dev/null", O_WRONLY); ASSERT (STDERR_FILENO < fd); +#endif /* Using a non-directory is wrong for relative paths. */ errno = 0; + fd = open ("/dev/null", O_RDONLY); + ASSERT (STDERR_FILENO < fd); ASSERT (openat (fd, ".", O_RDONLY) == -1); ASSERT (errno == EBADF || errno == ENOTDIR); ASSERT (close (fd) == 0);