2012/1/31 Bruno Haible <br...@clisp.org> > Hi, > > Chuanchang Jia wrote: > > I'm compiling libvirt project, and I met the following compilation > warning > > when run 'make check', > > I saw our codes haven't done any check for return value of 'read', > 'write' > > and 'pipe' operations in > > test-poll.c. IMHO, we should check related return value, although it's > just > > a test case. > > Thanks. I like your patch, not because it fixes some warnings, but because > it makes the test more reliable. > > Applied like this. (The "tiny change" marker is not meant to minimize > your effort, rather it indicates that we can accept it in gnulib without > having a format copyrigh assignment from you.) > Hi Bruno, Thanks for your review and change these.
Regards, Alex > > Bruno > > > 2012-01-29 Chuanchang Jia <chuanchang....@gmail.com> (tiny change) > Bruno Haible <br...@clisp.org> > > poll tests: Make test more robust. > * tests/test-poll.c: Include macros.h. > (test_accept_first, test_pair, test_socket_pair, test_pipe): Verify > return value of various I/O operations. > * modules/poll-tests (Files): Add tests/macros.h. > > --- modules/poll-tests.orig Mon Jan 30 22:33:14 2012 > +++ modules/poll-tests Mon Jan 30 21:48:17 2012 > @@ -1,6 +1,7 @@ > Files: > -tests/signature.h > tests/test-poll.c > +tests/signature.h > +tests/macros.h > > Depends-on: > stdbool > --- tests/test-poll.c.orig Mon Jan 30 22:33:14 2012 > +++ tests/test-poll.c Mon Jan 30 21:46:55 2012 > @@ -36,6 +36,8 @@ > #include <sys/ioctl.h> > #include <errno.h> > > +#include "macros.h" > + > #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ > # define WINDOWS_NATIVE > #endif > @@ -261,9 +263,10 @@ > { > addrlen = sizeof (ia); > c = accept (s, (struct sockaddr *) &ia, &addrlen); > + ASSERT (c >= 0); > close (s); > - write (c, "foo", 3); > - read (c, buf, 3); > + ASSERT (write (c, "foo", 3) == 3); > + ASSERT (read (c, buf, 3) == 3); > shutdown (c, SHUT_RD); > close (c); > exit (0); > @@ -272,15 +275,16 @@ > { > close (s); > c = connect_to_socket (true); > + ASSERT (c >= 0); > if (poll1_nowait (c, POLLOUT | POLLWRNORM | POLLRDBAND) > != (POLLOUT | POLLWRNORM)) > failed ("cannot write after blocking connect"); > - write (c, "foo", 3); > + ASSERT (write (c, "foo", 3) == 3); > wait (&pid); > if (poll1_wait (c, POLLIN) != POLLIN) > failed ("cannot read data left in the socket by closed process"); > - read (c, buf, 3); > - write (c, "foo", 3); > + ASSERT (read (c, buf, 3) == 3); > + ASSERT (write (c, "foo", 3) == 3); > if ((poll1_wait (c, POLLIN | POLLOUT) & (POLLHUP | POLLERR)) == 0) > failed ("expecting POLLHUP after shutdown"); > close (c); > @@ -304,7 +308,7 @@ > != POLLWRNORM) > failed ("expecting POLLWRNORM before writing"); > > - write (wd, "foo", 3); > + ASSERT (write (wd, "foo", 3) == 3); > if (poll1_wait (rd, POLLIN | POLLRDNORM) != (POLLIN | POLLRDNORM)) > failed ("expecting POLLIN | POLLRDNORM after writing"); > if (poll1_nowait (rd, POLLIN) != POLLIN) > @@ -312,7 +316,7 @@ > if (poll1_nowait (rd, POLLRDNORM) != POLLRDNORM) > failed ("expecting POLLRDNORM after writing"); > > - read (rd, buf, 3); > + ASSERT (read (rd, buf, 3) == 3); > } > > > @@ -327,12 +331,15 @@ > int s = open_server_socket (); > int c1 = connect_to_socket (false); > int c2 = accept (s, (struct sockaddr *) &ia, &addrlen); > + ASSERT (s >= 0); > + ASSERT (c1 >= 0); > + ASSERT (c2 >= 0); > > close (s); > > test_pair (c1, c2); > close (c1); > - write (c2, "foo", 3); > + ASSERT (write (c2, "foo", 3) == 3); > if ((poll1_nowait (c2, POLLIN | POLLOUT) & (POLLHUP | POLLERR)) == 0) > failed ("expecting POLLHUP after shutdown"); > > @@ -347,7 +354,7 @@ > { > int fd[2]; > > - pipe (fd); > + ASSERT (pipe (fd) >= 0); > test_pair (fd[0], fd[1]); > close (fd[0]); > if ((poll1_wait (fd[1], POLLIN | POLLOUT) & (POLLHUP | POLLERR)) == 0) > >