summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--tests/test-fchdir.c24
2 files changed, 21 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 87aa4a2520..0bcb5ef44e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2011-09-20 Bruno Haible <bruno@clisp.org>
+ fchdir tests: EBADF tests.
+ * tests/test-fchdir.c (main): Add more tests for EBADF.
+
dup2 tests: EBADF tests.
* tests/test-dup2.c (main): Add more tests for EBADF.
diff --git a/tests/test-fchdir.c b/tests/test-fchdir.c
index 0375c317d8..2e6b06760f 100644
--- a/tests/test-fchdir.c
+++ b/tests/test-fchdir.c
@@ -34,14 +34,29 @@ SIGNATURE_CHECK (fchdir, int, (int));
int
main (void)
{
- char *cwd = getcwd (NULL, 0);
- int fd = open (".", O_RDONLY);
+ char *cwd;
+ int fd;
int i;
+ cwd = getcwd (NULL, 0);
ASSERT (cwd);
+
+ fd = open (".", O_RDONLY);
ASSERT (0 <= fd);
- /* Check for failure cases. */
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (fchdir (-1) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ errno = 0;
+ ASSERT (fchdir (99) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ /* Check for other failure cases. */
{
int bad_fd = open ("/dev/null", O_RDONLY);
ASSERT (0 <= bad_fd);
@@ -49,9 +64,6 @@ main (void)
ASSERT (fchdir (bad_fd) == -1);
ASSERT (errno == ENOTDIR);
ASSERT (close (bad_fd) == 0);
- errno = 0;
- ASSERT (fchdir (-1) == -1);
- ASSERT (errno == EBADF);
}
/* Repeat test twice, once in '.' and once in '..'. */