Commit 9a345436 authored by Eric Blake's avatar Eric Blake

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: 's avatarEric Blake <ebb9@byu.net>
parent a93454a8
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.
Files:
tests/test-dirent-safer.c
tests/macros.h
Depends-on:
dup2
......
Files:
tests/test-freopen-safer.c
tests/macros.h
Depends-on:
......
Files:
tests/macros.h
tests/signature.h
tests/test-getopt.c
tests/test-getopt.h
......
Files:
tests/test-openat-safer.c
tests/macros.h
Depends-on:
......
Files:
tests/test-pipe.sh
tests/test-pipe.c
tests/macros.h
Depends-on:
progname
......
Files:
tests/test-dup-safer.c
tests/macros.h
Depends-on:
binary-io
......
......@@ -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 (); \
} \
} \
......
......@@ -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)
......
......@@ -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 @@ 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
......
......@@ -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)
......
......@@ -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
......
......@@ -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"
......
......@@ -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
......
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment