std::size_t TestFixture::runTests(const options& args) { std::string classname(args.which_test()); std::string testname(""); if (classname.find("::") != std::string::npos) { testname = classname.substr(classname.find("::") + 2); classname.erase(classname.find("::")); } countTests = 0; errmsg.str(""); const std::list<TestFixture *> &tests = TestRegistry::theInstance().tests(); for (std::list<TestFixture *>::const_iterator it = tests.begin(); it != tests.end(); ++it) { if (classname.empty() || (*it)->classname == classname) { (*it)->processOptions(args); (*it)->run(testname); } } std::cout << "\n\nTesting Complete\nNumber of tests: " << countTests << std::endl; std::cout << "Number of todos: " << todos_counter; if (succeeded_todos_counter > 0) std::cout << " (" << succeeded_todos_counter << " succeeded)"; std::cout << std::endl; // calling flush here, to do all output before the error messages (in case the output is buffered) std::cout.flush(); std::cerr << "Tests failed: " << fails_counter << std::endl << std::endl; std::cerr << errmsg.str(); std::cerr.flush(); return fails_counter; }
size_t TestFixture::runTests(const char cmd[]) { std::string classname(cmd ? cmd : ""); std::string testname(""); if (classname.find("::") != std::string::npos) { testname = classname.substr(classname.find("::") + 2); classname.erase(classname.find("::")); } countTests = 0; errmsg.str(""); const std::list<TestFixture *> &tests = TestRegistry::theInstance().tests(); for (std::list<TestFixture *>::const_iterator it = tests.begin(); it != tests.end(); ++it) { if (classname.empty() || (*it)->classname == classname) { (*it)->run(testname); } } std::cout << "\n\nTesting Complete\nNumber of tests: " << countTests << "\n"; std::cerr << errmsg.str(); return fails_counter; }
virtual void test_completed(const tut::test_result& tr) { std::string testname(STRINGIZE(tr.group << "." << tr.test)); if (! tr.name.empty()) { testname.append(":"); testname.append(tr.name); } testname = escape(testname); // Sadly, tut::callback doesn't give us control at test start; have to // backfill start message into TC output. std::cout << "##teamcity[testStarted name='" << testname << "']" << std::endl; // now forward call to base class so any output produced there is in // the right TC context LLTestCallback::test_completed(tr); switch(tr.result) { case tut::test_result::ok: break; case tut::test_result::fail: case tut::test_result::ex: case tut::test_result::warn: case tut::test_result::term: std::cout << "##teamcity[testFailed name='" << testname << "' message='" << escape(tr.message) << "']" << std::endl; break; case tut::test_result::skip: std::cout << "##teamcity[testIgnored name='" << testname << "']" << std::endl; break; default: break; } std::cout << "##teamcity[testFinished name='" << testname << "']" << std::endl; }
QVariant TestItem::data(int role) const { switch(role) { case DurationRole: return duration(); case ChecksumRole: return checksum(); case DependsRole: return depends(); case TestNameRole: return testname(); case RequiresRole: return requires(); case DescriptionRole: return description(); case CommandRole: return command(); case EnvironRole: return environ(); case PluginRole: return plugin(); case TypeRole: return type(); case UserRole: return user(); case ViaRole: return via(); case GroupRole: return group(); case CheckRole: return check(); case ObjectPathRole: return objectpath(); case RunstatusRole: return runstatus(); case ElapsedtimeRole: return elapsedtime(); case GroupstatusRole: return groupstatus(); case ParentNameRole: break; case ParentIdRole: break; case DepthRole: return depth(); case BranchRole: return branch(); case RerunRole: return rerun(); default: return QVariant(); } // Prevents non-void return warning from the compiler return QVariant(); }