8 #include <sys/socket.h>
55 std::cerr <<
"No such suite " <<
argv[1] << std::endl;
62 int t = strtol(
argv[2], &
end, 0 );
63 if (
end ==
argv[2] && t == 0 ) {
66 std::cerr <<
"No such test " <<
argv[2]
67 <<
" in suite " <<
argv[1] << std::endl;
87 #pragma GCC diagnostic push
88 #pragma GCC diagnostic ignored "-Wold-style-cast"
97 std::cout <<
"--> FAILED: "<<
current;
99 std::cout <<
" (exit status " << WEXITSTATUS(
status_code ) <<
")";
101 std::cout <<
" (caught signal " << WTERMSIG(
status_code ) <<
")";
102 std::cout << std::endl;
108 #pragma GCC diagnostic pop
114 if ( line ==
"done" ) {
116 #pragma GCC diagnostic push
117 #pragma GCC diagnostic ignored "-Wold-style-cast"
124 #pragma GCC diagnostic pop
126 std::cout <<
"overall " <<
total_ok <<
"/"
128 <<
" ok" << std::endl;
135 std::cout <<
"." << std::flush;
141 if ( line[0] ==
's' ) {
142 if ( line[2] ==
'd' ) {
144 <<
" ok" << std::endl;
151 if ( line[2] ==
's' ) {
153 std::cout << std::string( line.begin() + 5, line.end() )
154 <<
": " << std::flush;
159 if ( line[0] ==
't' ) {
160 if ( line[2] ==
'd' ) {
164 if ( line[2] ==
's' ) {
166 current = std::string( line.begin() + 5, line.end() );
182 perror(
"waitpid failed" );
201 ::write(
status_fds[ 1 ], line.c_str(), line.length() );
208 std::string line(
"ack\n" );
210 ::write(
confirm_fds[ 1 ], line.c_str(), line.length() );
220 int main(
int _argc,
char **_argv )
236 if ( socketpair( PF_UNIX,SOCK_STREAM, 0,
status_fds ) )
238 if ( socketpair( PF_UNIX,SOCK_STREAM, 0,
confirm_fds ) )
257 int main(
int argc,
char **argv ) {
ListIterator< List > end(List)
Definition: list.h:425
Definition: test-main.h:16
void status(std::string line)
Definition: test-main.h:196
int announced_suite
Definition: test-main.h:33
int test
Definition: test-main.h:18
int status_code
Definition: test-main.h:27
int total_failed
Definition: test-main.h:31
int test_ok
Definition: test-main.h:28
void child()
Definition: test-main.h:46
RunAll all
Definition: test-main.h:37
std::string current
Definition: test-main.h:34
Main()
Definition: test-main.h:39
int argc
Definition: test-main.h:24
int suite
Definition: test-main.h:18
void confirm()
Definition: test-main.h:207
void processStatus(std::string line)
Definition: test-main.h:112
wibble::sys::Pipe p_status
Definition: test-main.h:19
int main(int _argc, char **_argv)
Definition: test-main.h:220
char ** argv
Definition: test-main.h:25
void waitForAck()
Definition: test-main.h:213
int total_ok
Definition: test-main.h:31
int confirm_fds[2]
Definition: test-main.h:22
wibble::sys::Pipe p_confirm
Definition: test-main.h:20
int status_fds[2]
Definition: test-main.h:21
pid_t finished
Definition: test-main.h:26
pid_t pid
Definition: test-main.h:23
bool want_fork
Definition: test-main.h:35
int suite_ok
Definition: test-main.h:30
int suite_failed
Definition: test-main.h:30
Definition: test-runner.h:36
void runFrom(int suite, int test)
Definition: test-runner.h:76
void runSuite(RunSuite &s, int fromTest, int suite, int suiteCount)
Definition: test-runner.h:48
int suiteCount
Definition: test-runner.h:38
void runTest(RunSuite &s, int test)
Definition: test-runner.h:65
RunFeedback * feedback
Definition: test-runner.h:39
RunSuite * suites
Definition: test-runner.h:37
RunSuite * findSuite(std::string name)
Definition: test-runner.h:41
Definition: test-runner.h:31
Definition: test-runner.h:17
int findTest(std::string name)
Definition: test-runner.h:22
std::string nextLineBlocking()
Definition: pipe.h:204
bool eof()
Definition: pipe.h:130
int main(int argc, char **argv)
Definition: test-main.h:257
#define assert_eq(x, y)
Definition: test.h:33
#define assert(x)
Definition: test.h:30