int CppUnitTestRunner::Run(int argc, char* argv[]) { std::vector<CPPUNIT_NS::Test *> tests; CPPUNIT_NS::Test * root = CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest(); for (int i = 1; i < argc; i++) { if (! strcmp(argv[i], "/?") || ! strcmp(argv[i], "-?") || ! strcmp(argv[i], "--help")) { std::cout << "usage: " << argv[0] << " <test-suite|test> [<test-suite1|test1> ... ]"; std::cout << std::endl << Help(); return 0; } else { try { CPPUNIT_NS::Test * test = NULL; test = root->findTest(argv[i]); tests.push_back(test); } catch(std::invalid_argument&) { std::cout << "invalid test: " << argv[i]; std::cout << std::endl << Help(); return -1; } } } return tests.size() ? Run(tests) : Run(); }
void CppUnitTestHelper::listTest (CPPUNIT_NS::Test * rootTest) { CppUnitTestHelper::argc = 1; CPPUNIT_NS::Test * subTest; fprintf (stderr, "Test list:\n"); for (int i = 0, m = 0; m < rootTest->countTestCases (); ++i) { subTest = rootTest->getChildTestAt (i); fprintf (stderr, "Find test '%s'\n", subTest->getName ().c_str ()); for (int ii = 0; ii < subTest->countTestCases (); ++ii, ++m) { fprintf (stderr, "Find sub test '%s'\n", subTest->getChildTestAt (ii)->getName ().c_str ()); } } }
int main(int argc, const char * argv[]) { OptionsParser parser; if (parser.ParseOptions(argc, argv) < 0 || parser.m_Help) { parser.Usage(argv[0]); return -1; } if (parser.m_List) { CPPUNIT_NS::Test *test = CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest(); for (int i = 0; i < test->getChildTestCount(); i++) { printf("test %s\n", test->getChildTestAt(i)->getName().c_str()); for (int j = 0; j < test->getChildTestAt(i)->getChildTestCount(); j++) { printf("test %s\n", test->getChildTestAt(i)->getChildTestAt(j)->getName().c_str()); } } return 0; } CPPUNIT_NS::TestResult controller; // Add a listener that colllects test result CPPUNIT_NS::TestResultCollector result; controller.addListener( &result ); // Add a listener that print dots as test run. CPPUNIT_NS::BriefTestProgressListener progress; controller.addListener( &progress ); CPPUNIT_NS::TestRunner runner; // Add the single test to the test runner if (parser.m_RunSingle) { runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest()->findTest(parser.m_TestName)); // Add the top suite to the test runner } else { runner.addTest(CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest()); } runner.run( controller ); // Print test in a compiler compatible format. CPPUNIT_NS::CompilerOutputter outputter( &result, CPPUNIT_NS::stdCOut() ); outputter.write(); return result.wasSuccessful() ? 0 : 1; }
std::string CppUnitTestRunner::Help(CPPUNIT_NS::Test * test, int level) { std::stringstream s; for (int i = 0; i < test->getChildTestCount(); i++) { s << std::endl; if (0 < level) { std::string spaces(level, ' '); s << spaces; } CPPUNIT_NS::Test * child = test->getChildTestAt(i); s << child->getName(); s << Help(child, level + 1); } return s.str(); }
void TestRunnerModel::saveSettings( const Settings & s ) { CWinApp *app = AfxGetApp(); ASSERT( app != NULL ); int autorun = s.autorunOnLaunch ? 1 : 0; app->WriteProfileInt( _T("CppUnit"), _T("AutorunAtStartup"), autorun ); app->WriteProfileInt( _T("CppUnit"), _T("Col_1"), s.col_1 ); app->WriteProfileInt( _T("CppUnit"), _T("Col_2"), s.col_2 ); app->WriteProfileInt( _T("CppUnit"), _T("Col_3"), s.col_3 ); app->WriteProfileInt( _T("CppUnit"), _T("Col_4"), s.col_4 ); int idx = 1; for ( History::const_iterator it = m_history.begin(); it != m_history.end(); ++it , ++idx ) { CPPUNIT_NS::Test *test = *it; saveHistoryEntry( idx, test->getName().c_str() ); } }
int CppUnitTestHelper::runTest (int argc, char** argv, const string & reportName) { int out = 0; if (argc > 0 && argv != NULL) { CppUnitTestHelper::argc = argc; CppUnitTestHelper::argv = argv; } CPPUNIT_NS::Test * rootTest = CPPUNIT_NS::TestFactoryRegistry::getRegistry ().makeTest (); CPPUNIT_NS::Test * test = NULL; if (argc > 1) { if (strcmp (argv [1], "help") == 0 || strcmp (argv [1], "--help") == 0 || strcmp (argv [1], "-h") == 0) { CppUnitTestHelper::listTest (rootTest); } else { try { test = rootTest->findTest (argv [1]); } catch (std::exception &e) { CppUnitTestHelper::listTest (rootTest); throw; } } } else { test = rootTest; } if (test != NULL) { // Create the event manager and test controller CPPUNIT_NS::TestResult controller; // Add a listener that colllects test result CPPUNIT_NS::TestResultCollector result; controller.addListener (&result); // Add a listener that print dots as test run. CPPUNIT_NS::BriefTestProgressListener progress; controller.addListener (&progress); // Add the top suite to the test runner CPPUNIT_NS::TestRunner runner; runner.addTest (test); runner.run (controller); // Print test in a compiler compatible format. CPPUNIT_NS::CompilerOutputter outputter (&result, CPPUNIT_NS::stdCOut ()); outputter.write (); ofstream outFile (reportName.c_str ()); CPPUNIT_NS::XmlOutputter xml_outputter (&result, outFile); xml_outputter.write (); out = result.wasSuccessful () ? 0 : -1; // runner destructor should do the cleaning work } else { CPPUNIT_NS::TestRunner deleter; deleter.addTest (rootTest); } return out; }
int main(int argc, char* argv[]) { atexit(cleanup); printf("\nRing Daemon Test Suite, by Savoir-faire Linux 2004-2015\n\n"); setConsoleLog(true); setDebugMode(true); ring::fileutils::FileHandle f(ring::fileutils::create_pidfile()); if (f.fd == -1) { fprintf(stderr, "An dring instance is already running, quitting...\n"); return 1; } int argvIndex = 1; bool xmlOutput = false; if (argc > 1) { if (strcmp("--help", argv[1]) == 0) { argvIndex++; CPPUNIT_NS::Test* suite = CPPUNIT_NS::TestFactoryRegistry::getRegistry("All Tests").makeTest(); int testSuiteCount = suite->getChildTestCount(); printf("Usage: test [OPTIONS] [TEST_SUITE]\n"); printf("\nOptions:\n"); printf(" --xml - Output results in an XML file, instead of standard output.\n"); printf(" --debug - Debug mode\n"); printf(" --help - Print help\n"); printf("\nAvailable test suites:\n"); for (int i = 0; i < testSuiteCount; i++) { printf(" - %s\n", suite->getChildTestAt(i)->getName().c_str()); } return 0; } else if (strcmp("--debug", argv[1]) == 0) { argvIndex++; setDebugMode(true); RING_INFO("Debug mode activated"); } else if (strcmp("--xml", argv[1]) == 0) { argvIndex++; xmlOutput = true; RING_INFO("Using XML output"); } } // Default test suite : all tests std::string testSuiteName = "All Tests"; if (argvIndex < argc) { testSuiteName = argv[argvIndex]; argvIndex++; } printf("\n\n=== SFLphone initialization ===\n\n"); backup(); ring::Manager::instance().init(CONFIG_SAMPLE); // Get the top level suite from the registry printf("\n\n=== Test Suite: %s ===\n\n", testSuiteName.c_str()); CPPUNIT_NS::Test *suite = CPPUNIT_NS::TestFactoryRegistry::getRegistry(testSuiteName).makeTest(); if (suite->getChildTestCount() == 0) { RING_ERR("Invalid test suite name: %s", testSuiteName.c_str()); restore(); return 1; } // Adds the test to the list of test to run CppUnit::TextTestRunner runner; runner.addTest(suite); /* Specify XML output */ std::ofstream outfile("cppunitresults.xml"); if (xmlOutput) { CppUnit::XmlOutputter* outputter = new CppUnit::XmlOutputter(&runner.result(), outfile); runner.setOutputter(outputter); } else { // Change the default outputter to a compiler error format outputter runner.setOutputter(new CppUnit::CompilerOutputter(&runner.result(), std::cerr)); } // Run the tests. bool wasSuccessful = runner.run(); printf("=== Test suite ending ===\n"); ring::Manager::instance().finish(); restore(); return wasSuccessful ? 0 : 1; }