# HG changeset patch # User Eric Blake # Date 1261782408 25200 # Node ID 618282a72d9b6b375340ef9a6baac763aef78547 # Parent aa547f8201c1593c2d99dab13b803ff085b21af7 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 diff --git a/ChangeLog b/ChangeLog --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 --- 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 @@ 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 --- 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 --- 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 diff --git a/tests/test-openat-safer.c b/tests/test-openat-safer.c --- 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 --- 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 --- 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)