1 /*
2  * Copyright (c) 2004, Bull S.A..  All rights reserved.
3  * Created by: Sebastien Decugis
4 
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of version 2 of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it would be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12  *
13  * You should have received a copy of the GNU General Public License along
14  * with this program; if not, write the Free Software Foundation, Inc.,
15  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16  *
17 
18 
19  * This file is a wrapper to use the tests from the NPTL Test & Trace Project
20  * with either the Linux Test Project or the Open POSIX Test Suite.
21 
22  * The following macros are defined here:
23  * UNRESOLVED(ret, descr);
24  *    where descr is a description of the error and ret is an int (error code for example)
25  * FAILED(descr);
26  *    where descr is a short text saying why the test has failed.
27  * PASSED();
28  *    No parameter.
29  *
30  * Both three macros shall terminate the calling process.
31  * The testcase shall not terminate without calling one of those macros.
32  *
33  *
34  */
35 
36 #include "posixtest.h"
37 #include <string.h> /* for the strerror() routine */
38 
39 
40 #ifdef __GNUC__ /* We are using GCC */
41 
42   #define UNRESOLVED(x, s) \
43  { output("Test %s unresolved: got %i (%s) on line %i (%s)\n", __FILE__, x, strerror(x), __LINE__, s); \
44  	output_fini(); \
45  	exit(PTS_UNRESOLVED); }
46 
47  #define FAILED(s) \
48  { output("Test %s FAILED: %s\n", __FILE__, s); \
49  	output_fini(); \
50  	exit(PTS_FAIL); }
51 
52  #define PASSED \
53   output_fini(); \
54   exit(PTS_PASS);
55 
56  #define UNTESTED(s) \
57 {	output("File %s cannot test: %s\n", __FILE__, s); \
58 	  output_fini(); \
59   exit(PTS_UNTESTED); \
60 }
61 
62 #else /* not using GCC */
63 
64   #define UNRESOLVED(x, s) \
65  { output("Test unresolved: got %i (%s) on line %i (%s)\n", x, strerror(x), __LINE__, s); \
66   output_fini(); \
67  	exit(PTS_UNRESOLVED); }
68 
69  #define FAILED(s) \
70  { output("Test FAILED: %s\n", s); \
71   output_fini(); \
72  	exit(PTS_FAIL); }
73 
74  #define PASSED \
75   output_fini(); \
76   exit(PTS_PASS);
77 
78  #define UNTESTED(s) \
79 {	output("Unable to test: %s\n", s); \
80 	  output_fini(); \
81   exit(PTS_UNTESTED); \
82 }
83 
84 #endif
85 
86