X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-readlink.h;h=33039de4316108d8c3d1bc80bc0638f695db190f;hb=1276a2c5f24c0c932426aca9c899fa524d2443f2;hp=4ce67f79d560446021bef2d735cbe83f9b631a4b;hpb=231bdaf6198a766ae5442fef6f4b8e661d523868;p=gnulib.git diff --git a/tests/test-readlink.h b/tests/test-readlink.h index 4ce67f79d..33039de43 100644 --- a/tests/test-readlink.h +++ b/tests/test-readlink.h @@ -1,5 +1,5 @@ /* Tests of readlink. - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -38,7 +38,7 @@ 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); + ASSERT (errno == ENOENT || errno == EINVAL); errno = 0; ASSERT (func (".", buf, sizeof buf) == -1); ASSERT (errno == EINVAL); @@ -51,12 +51,12 @@ test_readlink (ssize_t (*func) (char const *, char *, size_t), bool print) ASSERT (errno == EINVAL); errno = 0; ASSERT (func (BASE "file/", buf, sizeof buf) == -1); - ASSERT (errno == ENOTDIR); - ASSERT (unlink (BASE "file") == 0); + ASSERT (errno == ENOTDIR || errno == EINVAL); /* AIX yields EINVAL */ /* Now test actual symlinks. */ if (symlink (BASE "dir", BASE "link")) { + ASSERT (unlink (BASE "file") == 0); if (print) fputs ("skipping test: symlinks not supported on this file system\n", stderr); @@ -66,6 +66,17 @@ test_readlink (ssize_t (*func) (char const *, char *, size_t), bool print) errno = 0; ASSERT (func (BASE "link/", buf, sizeof buf) == -1); ASSERT (errno == EINVAL); + ASSERT (symlink (BASE "link", BASE "link2") == 0); + errno = 0; + ASSERT (func (BASE "link2/", buf, sizeof buf) == -1); + ASSERT (errno == EINVAL); + ASSERT (unlink (BASE "link2") == 0); + ASSERT (symlink (BASE "file", BASE "link2") == 0); + errno = 0; + ASSERT (func (BASE "link2/", buf, sizeof buf) == -1); + ASSERT (errno == ENOTDIR || errno == EINVAL); /* AIX yields EINVAL */ + ASSERT (unlink (BASE "file") == 0); + ASSERT (unlink (BASE "link2") == 0); { /* Up till now, no readlink has been successful, so buf should be unchanged. */ @@ -83,13 +94,13 @@ test_readlink (ssize_t (*func) (char const *, char *, size_t), bool print) result = readlink (BASE "link", buf, 1); if (result == -1) { - ASSERT (errno == ERANGE); - ASSERT (buf[0] == (char) 0xff); + ASSERT (errno == ERANGE); + ASSERT (buf[0] == (char) 0xff); } else { - ASSERT (result == 1); - ASSERT (buf[0] == BASE[0]); + ASSERT (result == 1); + ASSERT (buf[0] == BASE[0]); } ASSERT (buf[1] == (char) 0xff); ASSERT (func (BASE "link", buf, len) == len);