예제 #1
0
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();
}
예제 #2
0
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 ());
      }
   }
}
예제 #3
0
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;
}
예제 #4
0
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();
}
예제 #5
0
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() );
  }
}
예제 #6
0
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;
}
예제 #7
0
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;
}