changeset 30478:701b54e20022

Don't rely on the contents of stderr of shell commands.
author Bruno Haible <bruno@clisp.org>
date Tue, 11 Nov 2008 02:28:25 +0100
parents 408a4197ca51
children a6eacdcc9aa8
files ChangeLog tests/test-select-fd.c tests/test-select-in.sh tests/test-select-out.sh
diffstat 4 files changed, 52 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Nov 11 01:23:24 2008 +0100
+++ b/ChangeLog	Tue Nov 11 02:28:25 2008 +0100
@@ -1,3 +1,10 @@
+2008-11-10  Bruno Haible  <bruno@clisp.org>
+
+	* tests/test-select-fd.c (main): Accept the result file name as fourth
+	argument.
+	* tests/test-select-in.sh: Pass t-select-in.tmp as fourth argument.
+	* tests/test-select-out.sh: Pass t-select-out.tmp as fourth argument.
+
 2008-11-10  Bruno Haible  <bruno@clisp.org>
 
 	* lib/netdb.in.h: Use HAVE_STRUCT_ADDRINFO, HAVE_DECL_GETADDRINFO,
--- a/tests/test-select-fd.c	Tue Nov 11 01:23:24 2008 +0100
+++ b/tests/test-select-fd.c	Tue Nov 11 02:28:25 2008 +0100
@@ -25,7 +25,7 @@
 int
 main (int argc, char *argv[])
 {
-  if (argc == 3)
+  if (argc == 4)
     {
       char mode = argv[1][0];
 
@@ -35,32 +35,38 @@
 
 	  if (fd >= 0)
 	    {
-	      fd_set fds;
-	      struct timeval timeout;
-	      int ret;
+	      const char *result_file_name = argv[3];
+	      FILE *result_file = fopen (result_file_name, "wb");
+
+	      if (result_file != NULL)
+		{
+		  fd_set fds;
+		  struct timeval timeout;
+		  int ret;
 
-	      FD_ZERO (&fds);
-	      FD_SET (fd, &fds);
-	      timeout.tv_sec = 0;
-	      timeout.tv_usec = 10000;
-	      ret = (mode == 'r'
-		     ? select (fd + 1, &fds, NULL, NULL, &timeout)
-		     : select (fd + 1, NULL, &fds, NULL, &timeout));
-	      if (ret < 0)
-		{
-		  perror ("select failed");
-		  exit (1);
+		  FD_ZERO (&fds);
+		  FD_SET (fd, &fds);
+		  timeout.tv_sec = 0;
+		  timeout.tv_usec = 10000;
+		  ret = (mode == 'r'
+			 ? select (fd + 1, &fds, NULL, NULL, &timeout)
+			 : select (fd + 1, NULL, &fds, NULL, &timeout));
+		  if (ret < 0)
+		    {
+		      perror ("select failed");
+		      exit (1);
+		    }
+		  if ((ret == 0) != ! FD_ISSET (fd, &fds))
+		    {
+		      fprintf (stderr, "incorrect return value\n");
+		      exit (1);
+		    }
+		  fprintf (result_file, "%d\n", ret);
+		  exit (0);
 		}
-	      if ((ret == 0) != ! FD_ISSET (fd, &fds))
-		{
-		  fprintf (stderr, "incorrect return value\n");
-		  exit (1);
-		}
-	      fprintf (stderr, "%d\n", ret);
-	      exit (0);
 	    }
 	}
     }
-  fprintf (stderr, "Usage: test-select-fd mode fd\n");
+  fprintf (stderr, "Usage: test-select-fd mode fd result-file-name\n");
   exit (1);
 }
--- a/tests/test-select-in.sh	Tue Nov 11 01:23:24 2008 +0100
+++ b/tests/test-select-in.sh	Tue Nov 11 02:28:25 2008 +0100
@@ -8,20 +8,24 @@
 
 # Regular files.
 
-./test-select-fd${EXEEXT} r 0 < ./test-select-fd${EXEEXT} 2> t-select-in.tmp
+rm -f t-select-in.tmp
+./test-select-fd${EXEEXT} r 0 t-select-in.tmp < ./test-select-fd${EXEEXT}
 test `cat t-select-in.tmp` = "1" || exit 1
 
 # Pipes.
 
-{ sleep 1; echo abc; } | ./test-select-fd${EXEEXT} r 0 2> t-select-in.tmp
+rm -f t-select-in.tmp
+{ sleep 1; echo abc; } | ./test-select-fd${EXEEXT} r 0 t-select-in.tmp
 test `cat t-select-in.tmp` = "0" || exit 1
 
-echo abc | { sleep 1; ./test-select-fd${EXEEXT} r 0; } 2> t-select-in.tmp
+rm -f t-select-in.tmp
+echo abc | { sleep 1; ./test-select-fd${EXEEXT} r 0 t-select-in.tmp; }
 test `cat t-select-in.tmp` = "1" || exit 1
 
 # Special files.
 
-./test-select-fd${EXEEXT} r 0 < /dev/null 2> t-select-in.tmp
+rm -f t-select-in.tmp
+./test-select-fd${EXEEXT} r 0 t-select-in.tmp < /dev/null
 test `cat t-select-in.tmp` = "1" || exit 1
 
 rm -fr $tmpfiles
--- a/tests/test-select-out.sh	Tue Nov 11 01:23:24 2008 +0100
+++ b/tests/test-select-out.sh	Tue Nov 11 02:28:25 2008 +0100
@@ -8,20 +8,24 @@
 
 # Regular files.
 
-./test-select-fd${EXEEXT} w 1 > t-select-out.out 2> t-select-out.tmp
+rm -f t-select-out.tmp
+./test-select-fd${EXEEXT} w 1 t-select-out.tmp > t-select-out.out
 test `cat t-select-out.tmp` = "1" || exit 1
 
 # Pipes.
 
-( { echo abc; ./test-select-fd${EXEEXT} w 1; } | { sleep 1; cat; } ) > /dev/null 2> t-select-out.tmp
+rm -f t-select-out.tmp
+( { echo abc; ./test-select-fd${EXEEXT} w 1 t-select-out.tmp; } | { sleep 1; cat; } ) > /dev/null
 test `cat t-select-out.tmp` = "0" || exit 1
 
-( { sleep 1; echo abc; ./test-select-fd${EXEEXT} w 1; } | cat) > /dev/null 2> t-select-out.tmp
+rm -f t-select-out.tmp
+( { sleep 1; echo abc; ./test-select-fd${EXEEXT} w 1 t-select-out.tmp; } | cat) > /dev/null
 test `cat t-select-out.tmp` = "1" || exit 1
 
 # Special files.
 
-./test-select-fd${EXEEXT} w 1 > /dev/null 2> t-select-out.tmp
+rm -f t-select-out.tmp
+./test-select-fd${EXEEXT} w 1 t-select-out.tmp > /dev/null
 test `cat t-select-out.tmp` = "1" || exit 1
 
 rm -fr $tmpfiles