summaryrefslogtreecommitdiff
path: root/gl/tests/test-symlink.h
diff options
context:
space:
mode:
Diffstat (limited to 'gl/tests/test-symlink.h')
-rw-r--r--gl/tests/test-symlink.h95
1 files changed, 0 insertions, 95 deletions
diff --git a/gl/tests/test-symlink.h b/gl/tests/test-symlink.h
deleted file mode 100644
index eb11cf69b8..0000000000
--- a/gl/tests/test-symlink.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Tests of symlink.
- 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
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-/* Written by Eric Blake <ebb9@byu.net>, 2009. */
-
-/* This file is designed to test both symlink(a,b) and
- symlinkat(a,AT_FDCWD,b). FUNC is the function to test. Assumes
- that BASE and ASSERT are already defined, and that appropriate
- headers are already included. If PRINT, warn before skipping
- symlink tests with status 77. */
-
-static int
-test_symlink (int (*func) (char const *, char const *), bool print)
-{
- if (func ("nowhere", BASE "link1"))
- {
- if (print)
- fputs ("skipping test: symlinks not supported on this file system\n",
- stderr);
- return 77;
- }
-
- /* Some systems allow the creation of 0-length symlinks as a synonym
- for "."; but most reject it. */
- {
- int status;
- errno = 0;
- status = func ("", BASE "link2");
- if (status == -1)
- ASSERT (errno == ENOENT || errno == EINVAL);
- else
- {
- ASSERT (status == 0);
- ASSERT (unlink (BASE "link2") == 0);
- }
- }
-
- /* Sanity checks of failures. */
- errno = 0;
- ASSERT (func ("nowhere", "") == -1);
- ASSERT (errno == ENOENT);
- errno = 0;
- ASSERT (func ("nowhere", ".") == -1);
- ASSERT (errno == EEXIST || errno == EINVAL);
- errno = 0;
- ASSERT (func ("somewhere", BASE "link1") == -1);
- ASSERT (errno == EEXIST);
- errno = 0;
- ASSERT (func ("nowhere", BASE "link2/") == -1);
- ASSERT (errno == ENOTDIR || errno == ENOENT);
- ASSERT (mkdir (BASE "dir", 0700) == 0);
- errno = 0;
- ASSERT (func ("nowhere", BASE "dir") == -1);
- ASSERT (errno == EEXIST);
- errno = 0;
- ASSERT (func ("nowhere", BASE "dir/") == -1);
- ASSERT (errno == EEXIST || errno == EINVAL);
- ASSERT (close (creat (BASE "file", 0600)) == 0);
- errno = 0;
- ASSERT (func ("nowhere", BASE "file") == -1);
- ASSERT (errno == EEXIST);
- errno = 0;
- ASSERT (func ("nowhere", BASE "file/") == -1);
- ASSERT (errno == EEXIST || errno == ENOTDIR || errno == ENOENT);
-
- /* Trailing slash must always be rejected. */
- ASSERT (unlink (BASE "link1") == 0);
- ASSERT (func (BASE "link2", BASE "link1") == 0);
- errno = 0;
- ASSERT (func (BASE "nowhere", BASE "link1/") == -1);
- ASSERT (errno == EEXIST || errno == ENOTDIR || errno == ENOENT);
- errno = 0;
- ASSERT (unlink (BASE "link2") == -1);
- ASSERT (errno == ENOENT);
-
- /* Cleanup. */
- ASSERT (rmdir (BASE "dir") == 0);
- ASSERT (unlink (BASE "file") == 0);
- ASSERT (unlink (BASE "link1") == 0);
-
- return 0;
-}