From: Bruno Haible Date: Tue, 20 Sep 2011 21:12:01 +0000 (+0200) Subject: fclose tests: EBADF tests. X-Git-Tag: v0.1~1807 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=c2b9820e05851086270a7fc5f32483346105b309;p=gnulib.git fclose tests: EBADF tests. * tests/test-fclose.c (main): Add tests for EBADF. --- diff --git a/ChangeLog b/ChangeLog index a10d1eb46..dedd5cb31 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2011-09-20 Bruno Haible + fclose tests: EBADF tests. + * tests/test-fclose.c (main): Add tests for EBADF. + fflush tests: EBADF tests. * tests/test-fflush.c: Include errno.h, macros.h. (main): Add tests for EBADF. diff --git a/tests/test-fclose.c b/tests/test-fclose.c index a11eca96e..ecc60cd4f 100644 --- a/tests/test-fclose.c +++ b/tests/test-fclose.c @@ -76,12 +76,35 @@ main (int argc, char **argv) /* Test that fclose() sets errno if someone else closes the stream fd behind the back of stdio. */ - f = fdopen (fd, "w+"); - ASSERT (f); - ASSERT (close (fd) == 0); - errno = 0; - ASSERT (fclose (f) == EOF); - ASSERT (errno == EBADF); + { + FILE *fp = fdopen (fd, "w+"); + ASSERT (fp != NULL); + ASSERT (close (fd) == 0); + errno = 0; + ASSERT (fclose (fp) == EOF); + ASSERT (errno == EBADF); + } + + /* Test that fclose() sets errno if the stream was constructed with + an invalid file descriptor. */ + { + FILE *fp = fdopen (-1, "r"); + if (fp != NULL) + { + errno = 0; + ASSERT (fclose (fp) == EOF); + ASSERT (errno == EBADF); + } + } + { + FILE *fp = fdopen (99, "r"); + if (fp != NULL) + { + errno = 0; + ASSERT (fclose (fp) == EOF); + ASSERT (errno == EBADF); + } + } /* Clean up. */ ASSERT (remove (BASE) == 0);