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)
>
>

Reply via email to