X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libtest%2Fcollection.cc;h=26e8bb44e33d455ef725546dc98fe338da3427b3;hb=1d20951aaf789a940b05f8dd78c7bf8854db2521;hp=1de74ade078e1704cb6b173391def267ec026b0e;hpb=e9c7a25491f4cf9265a926b7d9848bd70acaf7aa;p=awesomized%2Flibmemcached diff --git a/libtest/collection.cc b/libtest/collection.cc index 1de74ade..26e8bb44 100644 --- a/libtest/collection.cc +++ b/libtest/collection.cc @@ -38,7 +38,7 @@ #include -static test_return_t runner_code(Framework* frame, +static test_return_t runner_code(libtest::Framework* frame, test_st* run, libtest::Timer& _timer) { // Runner Code @@ -84,21 +84,22 @@ Collection::Collection(Framework* frame_arg, _success(0), _skipped(0), _failed(0), - _total(0) + _total(0), + _formatter(_name) { fatal_assert(arg); } test_return_t Collection::exec() { - Out << "Collection: " << _name; - if (test_success(_frame->runner()->pre(_pre, _frame->creators_ptr()))) { for (test_st *run= _tests; run->name; run++) { + formatter()->push_testcase(run->name); if (_frame->match(run->name)) { + formatter()->skipped(); continue; } _total++; @@ -112,39 +113,46 @@ test_return_t Collection::exec() { Error << "frame->runner()->flush(creators_ptr)"; _skipped++; + formatter()->skipped(); continue; } } - return_code= runner_code(_frame, run, _timer); + alarm(600); + try + { + return_code= runner_code(_frame, run, _timer); + } + catch (...) + { + alarm(0); + throw; + } + alarm(0); } - catch (libtest::fatal &e) + catch (libtest::exception &e) { - Error << "Fatal exception was thrown: " << e.what(); - stream::cerr(__FILE__, __LINE__, __func__) << e.what(); + stream::cerr(e.file(), e.line(), e.func()) << e.what(); _failed++; + formatter()->failed(); throw; } switch (return_code) { case TEST_SUCCESS: - Out << "\tTesting " - << run->name - << "\t\t\t\t\t" - << _timer - << " [ " << test_strerror(return_code) << " ]"; _success++; + formatter()->success(_timer); break; case TEST_FAILURE: _failed++; - Out << "\tTesting " << run->name << "\t\t\t\t\t" << "[ " << test_strerror(return_code) << " ]"; + formatter()->failed(); break; case TEST_SKIPPED: _skipped++; - Out << "\tTesting " << run->name << "\t\t\t\t\t" << "[ " << test_strerror(return_code) << " ]"; + formatter()->skipped(); break; default: