On Cygwin 3.4.6, but not on Cygwin 3.5.3, I see these test failures: FAIL: test-areadlinkat.exe FAIL: test-areadlinkat-with-size.exe FAIL: test-readlinkat.exe
The cause is an errno value EBADF, where EINVAL would be better. Not worth adding a workaround. This patch avoids the failures. 2024-05-23 Bruno Haible <br...@clisp.org> readlinkat, areadlinkat: Avoid test failures on Cygwin 3.4.6. * tests/test-readlink.h (test_readlink): For an empty file name, allow errno == EBADF. * tests/test-areadlink.h (test_areadlink): Likewise. diff --git a/tests/test-areadlink.h b/tests/test-areadlink.h index cc65c4cc4e..e4fc225d7c 100644 --- a/tests/test-areadlink.h +++ b/tests/test-areadlink.h @@ -36,7 +36,8 @@ test_areadlink (char * (*func) (char const *, size_t), bool print) ASSERT (errno == ENOENT); errno = 0; ASSERT (func ("", 1) == NULL); - ASSERT (errno == ENOENT || errno == EINVAL); + ASSERT (errno == ENOENT || errno == EINVAL + || errno == EBADF /* Cygwin < 3.5 */); errno = 0; ASSERT (func (".", 1) == NULL); ASSERT (errno == EINVAL); diff --git a/tests/test-readlink.h b/tests/test-readlink.h index 3a21b60b15..c04ae311e2 100644 --- a/tests/test-readlink.h +++ b/tests/test-readlink.h @@ -38,7 +38,8 @@ test_readlink (ssize_t (*func) (char const *, char *, size_t), bool print) ASSERT (errno == ENOENT); errno = 0; ASSERT (func ("", buf, sizeof buf) == -1); - ASSERT (errno == ENOENT || errno == EINVAL); + ASSERT (errno == ENOENT || errno == EINVAL + || errno == EBADF /* Cygwin < 3.5 */); errno = 0; ASSERT (func (".", buf, sizeof buf) == -1); ASSERT (errno == EINVAL);