From 9a3454362bbd242121df2ba63aef92fc96a1e390 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Fri, 25 Dec 2009 16:06:48 -0700 Subject: [PATCH] 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 --- ChangeLog | 20 ++++++++++++++++++++ modules/dirent-safer-tests | 1 + modules/freopen-safer-tests | 1 + modules/getopt-posix-tests | 1 + modules/openat-safer-tests | 1 + modules/pipe-tests | 1 + modules/unistd-safer-tests | 1 + tests/macros.h | 18 +++++++++++++----- tests/test-dirent-safer.c | 16 +++------------- tests/test-dup-safer.c | 17 +++-------------- tests/test-freopen-safer.c | 16 +++------------- tests/test-getopt.c | 15 +++------------ tests/test-openat-safer.c | 16 +++------------- tests/test-pipe.c | 15 +++------------ tests/test-popen-safer.c | 16 +++------------- 15 files changed, 60 insertions(+), 95 deletions(-) diff --git a/ChangeLog b/ChangeLog index f17fd9555..fbf1354d8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +2009-12-26 Eric Blake + + 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 javacomp: Portability fix. diff --git a/modules/dirent-safer-tests b/modules/dirent-safer-tests index da8777891..2bc95933f 100644 --- 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 diff --git a/modules/freopen-safer-tests b/modules/freopen-safer-tests index 9511880a2..048d8a2a4 100644 --- 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: diff --git a/modules/getopt-posix-tests b/modules/getopt-posix-tests index 438b6e4c1..9c73d08b7 100644 --- 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 diff --git a/modules/openat-safer-tests b/modules/openat-safer-tests index 20bf3822d..1f0b158fc 100644 --- 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: diff --git a/modules/pipe-tests b/modules/pipe-tests index 14d1e0fef..0e31a865a 100644 --- 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 diff --git a/modules/unistd-safer-tests b/modules/unistd-safer-tests index a6da5a9bd..cc4b97ab3 100644 --- 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 diff --git a/tests/macros.h b/tests/macros.h index dc55fbe02..b29378e94 100644 --- a/tests/macros.h +++ b/tests/macros.h @@ -21,9 +21,16 @@ #include #include +/* 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 (); \ } \ } \ diff --git a/tests/test-dirent-safer.c b/tests/test-dirent-safer.c index 8d5d52928..045d29b44 100644 --- a/tests/test-dirent-safer.c +++ b/tests/test-dirent-safer.c @@ -23,7 +23,6 @@ #include #include #include -#include #include #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) diff --git a/tests/test-dup-safer.c b/tests/test-dup-safer.c index 24cc9e5f3..6a5c69d80 100644 --- a/tests/test-dup-safer.c +++ b/tests/test-dup-safer.c @@ -24,8 +24,6 @@ #include #include #include -#include -#include #include "binary-io.h" #include "cloexec.h" @@ -49,19 +47,10 @@ static int zero (void) { return 0; } 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 diff --git a/tests/test-freopen-safer.c b/tests/test-freopen-safer.c index 40ba8872d..41d47dad4 100644 --- a/tests/test-freopen-safer.c +++ b/tests/test-freopen-safer.c @@ -22,7 +22,6 @@ #include "stdio--.h" /* Helpers. */ -#include #include /* 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) diff --git a/tests/test-getopt.c b/tests/test-getopt.c index 9502a442e..889659025 100644 --- a/tests/test-getopt.c +++ b/tests/test-getopt.c @@ -55,19 +55,10 @@ SIGNATURE_CHECK (getopt, int, (int, char * const[], char const *)); 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 diff --git a/tests/test-openat-safer.c b/tests/test-openat-safer.c index f7091807d..7a4960056 100644 --- a/tests/test-openat-safer.c +++ b/tests/test-openat-safer.c @@ -22,7 +22,6 @@ #include #include -#include #include #include @@ -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" diff --git a/tests/test-pipe.c b/tests/test-pipe.c index 4c298a7aa..ec498f46d 100644 --- 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 diff --git a/tests/test-popen-safer.c b/tests/test-popen-safer.c index 281dae9a7..d9ab83133 100644 --- a/tests/test-popen-safer.c +++ b/tests/test-popen-safer.c @@ -22,7 +22,6 @@ #include "stdio--.h" /* Helpers. */ -#include #include #include @@ -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) -- 2.11.0