summaryrefslogtreecommitdiff
path: root/tests/test-lchmod.c
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2021-01-09 06:11:24 +0100
committerBruno Haible <bruno@clisp.org>2021-01-09 07:45:33 +0100
commit711098617fea3674aada0f1aee583d29cc47bfa7 (patch)
tree5c66399556b03d825a8a04c37e01dca0157f6ba2 /tests/test-lchmod.c
parent893f8c7445af51b51dcfa9fd63b3bcf6e39cdd8a (diff)
downloadgnulib-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.c22
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");