26 Main() : suite(0), test(0) {
27 suite_ok = suite_failed = 0;
28 total_ok = total_failed = 0;
36 all.
status = fdopen( status[1],
"w" );
37 all.
confirm = fdopen( confirm[0],
"r" );
41 std::cerr <<
"No such suite " << argv[1] << std::endl;
50 fprintf( all.
status,
"done\n" );
58 if ( WIFEXITED( status_code ) ) {
59 if ( WEXITSTATUS( status_code ) == 250 )
61 if ( WEXITSTATUS( status_code ) == 0 )
64 std::cout <<
"failed test: "<<
current;
65 if ( WIFEXITED( status_code ) )
66 std::cout <<
" (exit status " << WEXITSTATUS( status_code ) <<
")";
67 if ( WIFSIGNALED( status_code ) )
68 std::cout <<
" (caught signal " << WTERMSIG( status_code ) <<
")";
69 std::cout << std::endl;
78 if ( std::string(
"done") == line ) {
79 finished = waitpid( pid, &status_code, 0 );
80 assert_eq( pid, finished );
81 assert( WIFEXITED( status_code ) );
82 assert_eq( WEXITSTATUS( status_code ), 0 );
83 std::cout <<
"overall " << total_ok <<
"/"
84 << total_ok + total_failed
85 <<
" ok" << std::endl;
86 exit( total_failed == 0 ? 0 : 1 );
92 std::cout <<
"." << std::flush;
98 if ( line[0] ==
's' ) {
99 if ( line[2] ==
'd' ) {
100 std::cout <<
" " << suite_ok <<
"/" << suite_ok + suite_failed
101 <<
" ok" << std::endl;
106 suite_ok = suite_failed = 0;
108 if ( line[2] ==
's' ) {
109 if ( announced_suite < suite ) {
110 std::cout << line + 5 <<
": " << std::flush;
111 announced_suite =
suite;
115 if ( line[0] ==
't' ) {
116 if ( line[2] ==
'd' ) {
117 fprintf( f_confirm,
"ack\n" );
121 if ( line[2] ==
's' ) {
122 fprintf( f_confirm,
"ack\n" );
132 f_status = fdopen( status[0],
"r" );
133 f_confirm = fdopen( confirm[1],
"w" );
138 if ( getline( &line, &n, f_status ) < 0 ) {
139 finished = waitpid( pid, &status_code, 0 );
140 if ( finished < 0 ) {
141 perror(
"waitpid failed" );
144 assert_eq( pid, finished );
151 line[ strlen( line ) - 1 ] = 0;
159 int main(
int _argc,
char **_argv )
168 if ( pipe( status ) )
170 if ( pipe( confirm ) )
184 int main(
int argc,
char **argv ) {
FILE * f_status
Definition: test-main.h:10
int suiteCount
Definition: test-runner.h:18
RunSuite * findSuite(std::string name)
Definition: test-runner.h:21
void child()
Definition: test-main.h:33
void processStatus(const char *line)
Definition: test-main.h:77
int confirm[2]
Definition: test-main.h:9
int suite_ok
Definition: test-main.h:18
RunAll all
Definition: test-main.h:24
FILE * f_confirm
Definition: test-main.h:10
std::string current
Definition: test-main.h:22
int suite
Definition: test-main.h:7
Main()
Definition: test-main.h:26
char ** argv
Definition: test-main.h:13
int main(int _argc, char **_argv)
Definition: test-main.h:159
int status_code
Definition: test-main.h:15
Definition: test-runner.h:10
int test_ok
Definition: test-main.h:16
Definition: test-runner.h:16
FILE * confirm
Definition: test-runner.h:19
int total_ok
Definition: test-main.h:19
int total_failed
Definition: test-main.h:19
int test
Definition: test-main.h:7
int suite_failed
Definition: test-main.h:18
int argc
Definition: test-main.h:12
pid_t pid
Definition: test-main.h:11
pid_t finished
Definition: test-main.h:14
int announced_suite
Definition: test-main.h:21
void runSuite(RunSuite &s, int fromTest, int suite, int suiteCount)
Definition: test-runner.h:36
Definition: test-main.h:5
FILE * status
Definition: test-runner.h:19
int main(int argc, char **argv)
Definition: test-main.h:184
int status[2]
Definition: test-main.h:8
RunSuite * suites
Definition: test-runner.h:17
void parent()
Definition: test-main.h:129
void runFrom(int suite, int test)
Definition: test-runner.h:54
void testDied()
Definition: test-main.h:54