> 2 x FAIL: test-linkat On AIX 7.1, the linkat() function apparently fails with EINVAL when on Linux it returns other errno values. Here's the minimal change to make the test pass. OK to apply?
2011-06-19 Bruno Haible <br...@clisp.org> linkat test: Avoid test failure on AIX 7.1. * tests/test-linkat.c (main): Allow EINVAL as alternate error value. * tests/test-link.h (test_link): Likewise. --- tests/test-link.h.orig Sun Jun 19 16:30:07 2011 +++ tests/test-link.h Sun Jun 19 16:22:23 2011 @@ -115,10 +115,10 @@ ASSERT (errno == ENOENT); errno = 0; ASSERT (func (BASE "a/", BASE "c") == -1); - ASSERT (errno == ENOTDIR); + ASSERT (errno == ENOTDIR || errno == EINVAL); errno = 0; ASSERT (func (BASE "a", BASE "c/") == -1); - ASSERT (errno == ENOTDIR || errno == ENOENT); + ASSERT (errno == ENOTDIR || errno == ENOENT || errno == EINVAL); /* Most platforms reject hard links to directories, and even on those that do permit it, most users can't create them. We assume @@ -164,11 +164,12 @@ } errno = 0; ASSERT (func (BASE "b", BASE "link/") == -1); - ASSERT (errno == ENOTDIR || errno == ENOENT || errno == EEXIST); + ASSERT (errno == ENOTDIR || errno == ENOENT || errno == EEXIST + || errno == EINVAL); ASSERT (rename (BASE "b", BASE "a") == 0); errno = 0; ASSERT (func (BASE "link/", BASE "b") == -1); - ASSERT (errno == ENOTDIR || errno == EEXIST); + ASSERT (errno == ENOTDIR || errno == EEXIST || errno == EINVAL); /* Clean up. */ ASSERT (unlink (BASE "a") == 0); --- tests/test-linkat.c.orig Sun Jun 19 16:30:07 2011 +++ tests/test-linkat.c Sun Jun 19 16:23:06 2011 @@ -201,11 +201,13 @@ errno = 0; ASSERT (linkat (dfd, BASE "link1/", dfd, BASE "sub1", AT_SYMLINK_FOLLOW) == -1); - ASSERT (errno == EEXIST || errno == EPERM || errno == EACCES); + ASSERT (errno == EEXIST || errno == EPERM || errno == EACCES + || errno == EINVAL); errno = 0; ASSERT (linkat (dfd, BASE "link1", dfd, BASE "sub1/", AT_SYMLINK_FOLLOW) == -1); - ASSERT (errno == EEXIST || errno == EPERM || errno == EACCES); + ASSERT (errno == EEXIST || errno == EPERM || errno == EACCES + || errno == EINVAL); errno = 0; ASSERT (linkat (dfd, BASE "link1", dfd, BASE "link2", 0) == -1); ASSERT (errno == EEXIST); @@ -250,21 +252,21 @@ errno = 0; ASSERT (linkat (dfd, BASE "link2/", dfd, BASE "link5", AT_SYMLINK_FOLLOW) == -1); - ASSERT (errno == ENOTDIR); + ASSERT (errno == ENOTDIR || errno == EINVAL); errno = 0; ASSERT (linkat (dfd, BASE "link3/", dfd, BASE "link5", 0) == -1); ASSERT (errno == ELOOP); errno = 0; ASSERT (linkat (dfd, BASE "link3/", dfd, BASE "link5", AT_SYMLINK_FOLLOW) == -1); - ASSERT (errno == ELOOP); + ASSERT (errno == ELOOP || errno == EINVAL); errno = 0; ASSERT (linkat (dfd, BASE "link4/", dfd, BASE "link5", 0) == -1); ASSERT (errno == ENOENT); errno = 0; ASSERT (linkat (dfd, BASE "link4/", dfd, BASE "link5", AT_SYMLINK_FOLLOW) == -1); - ASSERT (errno == ENOENT); + ASSERT (errno == ENOENT || errno == EINVAL); /* Check for hard links to symlinks. */ ASSERT (linkat (dfd, BASE "link1", dfd, BASE "link5", 0) == 0); -- In memoriam Alois Eliáš <http://en.wikipedia.org/wiki/Alois_Eliáš>