Mercurial > hg > octave-lojdl > gnulib-hg
diff tests/test-unlinkat.c @ 12043:fc84db4ef49d
test-unlinkat: enhance test, to expose Solaris 9 bug
Share the unlink tests with unlinkat.
* tests/test-unlink.c (main): Factor guts...
* tests/test-unlink.h (test_rmdir_func): ...into new file.
* tests/test-rmdir.h (test_rmdir_func): Add parameter.
* tests/test-rmdir.c (main): Adjust caller.
* tests/test-unlinkat.c (main): Likewise. Add unlink tests.
(unlinker): New helper function.
(rmdirat): Enhance check.
* modules/rmdir-tests (Depends-on): Add stdbool.
* modules/unlink-tests (Depends-on): Likewise.
(Files): Add test-unlink.h.
* modules/openat-tests (Files): Likewise.
(Depends-on): Add unlinkdir.
Signed-off-by: Eric Blake <ebb9@byu.net>
author | Eric Blake <ebb9@byu.net> |
---|---|
date | Thu, 17 Sep 2009 22:16:56 -0600 |
parents | 5767a52927aa |
children | aee865e7b49f |
line wrap: on
line diff
--- a/tests/test-unlinkat.c +++ b/tests/test-unlinkat.c @@ -22,10 +22,13 @@ #include <fcntl.h> #include <errno.h> +#include <stdbool.h> #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> +#include "unlinkdir.h" + #if !HAVE_SYMLINK # define symlink(a,b) (-1) #endif @@ -45,17 +48,42 @@ #define BASE "test-unlinkat.t" #include "test-rmdir.h" +#include "test-unlink.h" + +static int dfd = AT_FDCWD; /* Wrapper around unlinkat to test rmdir behavior. */ static int rmdirat (char const *name) { - return unlinkat (AT_FDCWD, name, AT_REMOVEDIR); + return unlinkat (dfd, name, AT_REMOVEDIR); +} + +/* Wrapper around unlinkat to test unlink behavior. */ +static int +unlinker (char const *name) +{ + return unlinkat (dfd, name, 0); } int main () { - /* FIXME: Add tests of unlinkat(,0), and of fd instead of AT_FDCWD. */ - return test_rmdir_func (rmdirat); + /* FIXME: Add tests of fd other than ".". */ + int result1; + int result2; + result1 = test_rmdir_func (rmdirat, false); + result2 = test_unlink_func (unlinker, false); + ASSERT (result1 == result2); + dfd = open (".", O_RDONLY); + ASSERT (0 <= dfd); + result2 = test_rmdir_func (rmdirat, false); + ASSERT (result1 == result2); + result2 = test_unlink_func (unlinker, false); + ASSERT (result1 == result2); + ASSERT (close (dfd) == 0); + if (result1 == 77) + fputs ("skipping test: symlinks not supported on this filesystem\n", + stderr); + return result1; }