changeset 12510:618282a72d9b

tests: use macros.h in more places Make the ASSERT macro a bit more reusable. * tests/macros.h (ASSERT): Depend on ASSERT_STREAM. (ASSERT_STREAM): Provide default of stderr. * tests/test-dirent-safer.c: Include macros.h, using alternate stream for assertions. * tests/test-dup-safer.c: Likewise. * tests/test-freopen-safer.c: Likewise. * tests/test-getopt.c: Likewise. * tests/test-openat-safer.c: Likewise. * tests/test-pipe.c: Likewise. * tests/test-popen-safer.c: Likewise. * modules/dirent-safer-tests (Files): Include macros.h. * modules/unistd-safer-tests (Files): Likewise. * modules/freopen-safer-tests (Files): Likewise. * modules/getopt-posix-tests (Files): Likewise. * modules/openat-safer-tests (Files): Likewise. * modules/pipe-tests (Files): Likewise. Signed-off-by: Eric Blake <ebb9@byu.net>
author Eric Blake <ebb9@byu.net>
date Fri, 25 Dec 2009 16:06:48 -0700
parents aa547f8201c1
children b8d731a7c105
files ChangeLog modules/dirent-safer-tests modules/freopen-safer-tests modules/getopt-posix-tests modules/openat-safer-tests modules/pipe-tests modules/unistd-safer-tests tests/macros.h tests/test-dirent-safer.c tests/test-dup-safer.c tests/test-freopen-safer.c tests/test-getopt.c tests/test-openat-safer.c tests/test-pipe.c tests/test-popen-safer.c
diffstat 15 files changed, 60 insertions(+), 95 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2009-12-26  Eric Blake  <ebb9@byu.net>
+
+	tests: use macros.h in more places
+	* tests/macros.h (ASSERT): Depend on ASSERT_STREAM.
+	(ASSERT_STREAM): Provide default of stderr.
+	* tests/test-dirent-safer.c: Include macros.h, using alternate
+	stream for assertions.
+	* tests/test-dup-safer.c: Likewise.
+	* tests/test-freopen-safer.c: Likewise.
+	* tests/test-getopt.c: Likewise.
+	* tests/test-openat-safer.c: Likewise.
+	* tests/test-pipe.c: Likewise.
+	* tests/test-popen-safer.c: Likewise.
+	* modules/dirent-safer-tests (Files): Include macros.h.
+	* modules/unistd-safer-tests (Files): Likewise.
+	* modules/freopen-safer-tests (Files): Likewise.
+	* modules/getopt-posix-tests (Files): Likewise.
+	* modules/openat-safer-tests (Files): Likewise.
+	* modules/pipe-tests (Files): Likewise.
+
 2009-12-26  Bruno Haible  <bruno@clisp.org>
 
 	javacomp: Portability fix.
--- a/modules/dirent-safer-tests
+++ b/modules/dirent-safer-tests
@@ -1,5 +1,6 @@
 Files:
 tests/test-dirent-safer.c
+tests/macros.h
 
 Depends-on:
 dup2
--- a/modules/freopen-safer-tests
+++ b/modules/freopen-safer-tests
@@ -1,5 +1,6 @@
 Files:
 tests/test-freopen-safer.c
+tests/macros.h
 
 Depends-on:
 
--- a/modules/getopt-posix-tests
+++ b/modules/getopt-posix-tests
@@ -1,4 +1,5 @@
 Files:
+tests/macros.h
 tests/signature.h
 tests/test-getopt.c
 tests/test-getopt.h
--- a/modules/openat-safer-tests
+++ b/modules/openat-safer-tests
@@ -1,5 +1,6 @@
 Files:
 tests/test-openat-safer.c
+tests/macros.h
 
 Depends-on:
 
--- a/modules/pipe-tests
+++ b/modules/pipe-tests
@@ -1,6 +1,7 @@
 Files:
 tests/test-pipe.sh
 tests/test-pipe.c
+tests/macros.h
 
 Depends-on:
 progname
--- a/modules/unistd-safer-tests
+++ b/modules/unistd-safer-tests
@@ -1,5 +1,6 @@
 Files:
 tests/test-dup-safer.c
+tests/macros.h
 
 Depends-on:
 binary-io
--- a/tests/macros.h
+++ b/tests/macros.h
@@ -21,9 +21,16 @@
 #include <stdio.h>
 #include <stdlib.h>
 
+/* Define ASSERT_STREAM before including this file if ASSERT must
+   target a stream other than stderr.  */
+#ifndef ASSERT_STREAM
+# define ASSERT_STREAM stderr
+#endif
+
 /* ASSERT (condition);
    verifies that the specified condition is fulfilled.  If not, a message
-   is printed to stderr and the program is terminated with an error code.
+   is printed to ASSERT_STREAM if defined (defaulting to stderr if
+   undefined) and the program is terminated with an error code.
 
    This macro has the following properties:
      - The programmer specifies the expected condition, not the failure
@@ -33,16 +40,17 @@
      - On Unix platforms, the tester can debug the test program with a
        debugger (provided core dumps are enabled: "ulimit -c unlimited").
      - For the sake of platforms where no debugger is available (such as
-       some mingw systems), an error message is printed on stderr that
-       includes the source location of the ASSERT invocation.
+       some mingw systems), an error message is printed on the error
+       stream that includes the source location of the ASSERT invocation.
  */
 #define ASSERT(expr) \
   do                                                                         \
     {                                                                        \
       if (!(expr))                                                           \
         {                                                                    \
-          fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
-          fflush (stderr);                                                   \
+          fprintf (ASSERT_STREAM, "%s:%d: assertion failed\n",               \
+                   __FILE__, __LINE__);                                      \
+          fflush (ASSERT_STREAM);                                            \
           abort ();                                                          \
         }                                                                    \
     }                                                                        \
--- a/tests/test-dirent-safer.c
+++ b/tests/test-dirent-safer.c
@@ -23,7 +23,6 @@
 #include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
-#include <stdlib.h>
 #include <unistd.h>
 
 #include "unistd-safer.h"
@@ -33,19 +32,10 @@
    duplicate the original stderr.  */
 
 #define BACKUP_STDERR_FILENO 10
-static FILE *myerr;
+#define ASSERT_STREAM myerr
+#include "macros.h"
 
-#define ASSERT(expr) \
-  do                                                                         \
-    {                                                                        \
-      if (!(expr))                                                           \
-        {                                                                    \
-          fprintf (myerr, "%s:%d: assertion failed\n", __FILE__, __LINE__);  \
-          fflush (myerr);                                                    \
-          abort ();                                                          \
-        }                                                                    \
-    }                                                                        \
-  while (0)
+static FILE *myerr;
 
 int
 main (void)
--- a/tests/test-dup-safer.c
+++ b/tests/test-dup-safer.c
@@ -24,8 +24,6 @@
 #include <errno.h>
 #include <stdbool.h>
 #include <stdio.h>
-#include <stdlib.h>
-#include <sys/stat.h>
 
 #include "binary-io.h"
 #include "cloexec.h"
@@ -49,19 +47,10 @@
    duplicate the original stderr.  */
 
 #define BACKUP_STDERR_FILENO 10
-static FILE *myerr;
+#define ASSERT_STREAM myerr
+#include "macros.h"
 
-#define ASSERT(expr) \
-  do                                                                         \
-    {                                                                        \
-      if (!(expr))                                                           \
-        {                                                                    \
-          fprintf (myerr, "%s:%d: assertion failed\n", __FILE__, __LINE__);  \
-          fflush (myerr);                                                    \
-          abort ();                                                          \
-        }                                                                    \
-    }                                                                        \
-  while (0)
+static FILE *myerr;
 
 /* Return true if FD is open.  */
 static bool
--- a/tests/test-freopen-safer.c
+++ b/tests/test-freopen-safer.c
@@ -22,7 +22,6 @@
 #include "stdio--.h"
 
 /* Helpers.  */
-#include <stdlib.h>
 #include <unistd.h>
 
 /* This test intentionally closes stderr.  So, we arrange to have fd 10
@@ -30,19 +29,10 @@
    duplicate the original stderr.  */
 
 #define BACKUP_STDERR_FILENO 10
-static FILE *myerr;
+#define ASSERT_STREAM myerr
+#include "macros.h"
 
-#define ASSERT(expr) \
-  do                                                                         \
-    {                                                                        \
-      if (!(expr))                                                           \
-        {                                                                    \
-          fprintf (myerr, "%s:%d: assertion failed\n", __FILE__, __LINE__);  \
-          fflush (myerr);                                                    \
-          abort ();                                                          \
-        }                                                                    \
-    }                                                                        \
-  while (0)
+static FILE *myerr;
 
 int
 main (void)
--- a/tests/test-getopt.c
+++ b/tests/test-getopt.c
@@ -55,19 +55,10 @@
    duplicate the original stderr.  */
 
 #define BACKUP_STDERR_FILENO 10
-static FILE *myerr;
+#define ASSERT_STREAM myerr
+#include "macros.h"
 
-#define ASSERT(expr) \
-  do                                                                         \
-    {                                                                        \
-      if (!(expr))                                                           \
-        {                                                                    \
-          fprintf (myerr, "%s:%d: assertion failed\n", __FILE__, __LINE__);  \
-          fflush (myerr);                                                    \
-          abort ();                                                          \
-        }                                                                    \
-    }                                                                        \
-  while (0)
+static FILE *myerr;
 
 #include "test-getopt.h"
 #if GNULIB_GETOPT_GNU
--- a/tests/test-openat-safer.c
+++ b/tests/test-openat-safer.c
@@ -22,7 +22,6 @@
 
 #include <errno.h>
 #include <stdio.h>
-#include <stdlib.h>
 #include <sys/stat.h>
 #include <unistd.h>
 
@@ -31,19 +30,10 @@
    duplicate the original stderr.  */
 
 #define BACKUP_STDERR_FILENO 10
-static FILE *myerr;
+#define ASSERT_STREAM myerr
+#include "macros.h"
 
-#define ASSERT(expr) \
-  do                                                                         \
-    {                                                                        \
-      if (!(expr))                                                           \
-        {                                                                    \
-          fprintf (myerr, "%s:%d: assertion failed\n", __FILE__, __LINE__);  \
-          fflush (myerr);                                                    \
-          abort ();                                                          \
-        }                                                                    \
-    }                                                                        \
-  while (0)
+static FILE *myerr;
 
 #define witness "test-openat-safer.txt"
 
--- a/tests/test-pipe.c
+++ b/tests/test-pipe.c
@@ -33,19 +33,10 @@
    duplicate the original stderr.  */
 
 #define BACKUP_STDERR_FILENO 10
-static FILE *myerr;
+#define ASSERT_STREAM myerr
+#include "macros.h"
 
-#define ASSERT(expr) \
-  do                                                                         \
-    {                                                                        \
-      if (!(expr))                                                           \
-        {                                                                    \
-          fprintf (myerr, "%s:%d: assertion failed\n", __FILE__, __LINE__);  \
-          fflush (myerr);                                                    \
-          abort ();                                                          \
-        }                                                                    \
-    }                                                                        \
-  while (0)
+static FILE *myerr;
 
 /* Code executed by the child process.  argv[1] = "child".  */
 static int
--- a/tests/test-popen-safer.c
+++ b/tests/test-popen-safer.c
@@ -22,7 +22,6 @@
 #include "stdio--.h"
 
 /* Helpers.  */
-#include <stdlib.h>
 #include <sys/wait.h>
 #include <unistd.h>
 
@@ -31,19 +30,10 @@
    duplicate the original stderr.  */
 
 #define BACKUP_STDERR_FILENO 10
-static FILE *myerr;
+#define ASSERT_STREAM myerr
+#include "macros.h"
 
-#define ASSERT(expr) \
-  do                                                                         \
-    {                                                                        \
-      if (!(expr))                                                           \
-        {                                                                    \
-          fprintf (myerr, "%s:%d: assertion failed\n", __FILE__, __LINE__);  \
-          fflush (myerr);                                                    \
-          abort ();                                                          \
-        }                                                                    \
-    }                                                                        \
-  while (0)
+static FILE *myerr;
 
 int
 main (int argc, char **argv)