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  * This file is a wrapper to use the tests from the NPTL Test & Trace Project
18  * with either the Linux Test Project or the Open POSIX Test Suite.
19  *
20  * The following macros are defined here:
21  * UNRESOLVED(ret, descr);
22  *    where descr is a description of the error and ret is
23  *    an int (error code for example)
24  * FAILED(descr);
25  *    where descr is a short text saying why the test has failed.
26  * PASSED();
27  *    No parameter.
28  *
29  * Both three macros shall terminate the calling process.
30  * The testcase shall not terminate without calling one of those macros.
31  */
32 
33 #include "posixtest.h"
34 #include <string.h>
35 
36 #ifdef __GNUC__
37 
38 #define UNRESOLVED(x, s)						\
39 {									\
40 	output("Test %s unresolved: got %i (%s) on line %i (%s)\n",	\
41 		__FILE__, x, strerror(x), __LINE__, s);			\
42 	output_fini();							\
43 	exit(PTS_UNRESOLVED);						\
44 }
45 
46 #define FAILED(s)							\
47 {									\
48 	output("Test %s FAILED: %s\n", __FILE__, s);			\
49 	output_fini();							\
50 	exit(PTS_FAIL);							\
51 }
52 
53 #define PASSED								\
54 {									\
55 	output_fini();							\
56 	exit(PTS_PASS);							\
57 }
58 
59 #define UNTESTED(s)							\
60 {									\
61 	output("File %s cannot test: %s\n", __FILE__, s);		\
62 	output_fini();							\
63 	exit(PTS_UNTESTED);						\
64 }
65 
66 #else
67 
68 #define UNRESOLVED(x, s)						\
69 {									\
70 	output("Test unresolved: got %i (%s) on line %i (%s)\n",	\
71 		x, strerror(x), __LINE__, s);				\
72 	output_fini();							\
73 	exit(PTS_UNRESOLVED);						\
74 }
75 
76 #define FAILED(s)							\
77 {									\
78 	output("Test FAILED: %s\n", s);					\
79 	output_fini();							\
80 	exit(PTS_FAIL);							\
81 }
82 
83 #define PASSED								\
84 {									\
85 	output_fini();							\
86 	exit(PTS_PASS);							\
87 }
88 
89 #define UNTESTED(s)							\
90 {									\
91 	output("Unable to test: %s\n", s);				\
92 	output_fini();							\
93 	exit(PTS_UNTESTED);						\
94 }
95 
96 #endif
97