diff options
author | Bruno Haible <bruno@clisp.org> | 2021-01-09 06:11:24 +0100 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2021-01-09 07:45:33 +0100 |
commit | 711098617fea3674aada0f1aee583d29cc47bfa7 (patch) | |
tree | 5c66399556b03d825a8a04c37e01dca0157f6ba2 /tests/test-lchmod.c | |
parent | 893f8c7445af51b51dcfa9fd63b3bcf6e39cdd8a (diff) | |
download | gnulib-711098617fea3674aada0f1aee583d29cc47bfa7.tar.gz |
fchmod-tests, fchmodat tests, lchmod tests: Add more tests.
* tests/test-fchmod.c: Include <fcntl.h>.
(BASE): New macro.
(main): Add more tests.
* tests/test-fchmodat.c (main): Add more tests.
* tests/test-lchmod.c (main): Likewise.
Diffstat (limited to 'tests/test-lchmod.c')
-rw-r--r-- | tests/test-lchmod.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/tests/test-lchmod.c b/tests/test-lchmod.c index 7b8e8a13de..d4c811ea7b 100644 --- a/tests/test-lchmod.c +++ b/tests/test-lchmod.c @@ -33,7 +33,7 @@ SIGNATURE_CHECK (lchmod, int, (const char *, mode_t)); int main (void) { - /* Test that lchmod works on non-symlinks. */ + /* Test that lchmod works on regular files. */ { struct stat statbuf; unlink (BASE "file"); @@ -41,11 +41,31 @@ main (void) ASSERT (lchmod (BASE "file", 0400) == 0); ASSERT (stat (BASE "file", &statbuf) >= 0); ASSERT ((statbuf.st_mode & 0700) == 0400); + + errno = 0; + ASSERT (lchmod (BASE "file/", 0600) == -1); + ASSERT (errno == ENOTDIR); + /* Clean up. */ ASSERT (chmod (BASE "file", 0600) == 0); ASSERT (unlink (BASE "file") == 0); } + /* Test that lchmod works on directories. */ + { + struct stat statbuf; + + rmdir (BASE "dir"); + ASSERT (mkdir (BASE "dir", 0700) == 0); + ASSERT (lchmod (BASE "dir", 0500) == 0); + ASSERT (stat (BASE "dir", &statbuf) >= 0); + ASSERT ((statbuf.st_mode & 0700) == 0500); + ASSERT (lchmod (BASE "dir/", 0700) == 0); + + /* Clean up. */ + ASSERT (rmdir (BASE "dir") == 0); + } + /* Test that lchmod on symlinks does not modify the symlink target. */ { unlink (BASE "file"); |