7 #include "libfocunit.h"
28 int focunit_main(
int argc,
char **argv,
char *test_name, CU_SuiteInfo *
suites)
33 CU_pTestRegistry pRegistry;
37 CU_pFailureRecord FailureList;
38 CU_RunSummary *pRunSummary;
44 fprintf(stderr,
"FATAL: empty test name.\n");
48 if (CU_initialize_registry())
50 fprintf(stderr,
"FATAL: Initialization of Test Registry failed.\n");
54 assert(CU_get_registry());
55 assert(!CU_is_test_running());
57 if (CU_register_suites(
suites) != CUE_SUCCESS)
59 fprintf(stderr,
"FATAL: Register suites failed - %s\n", CU_get_error_msg());
62 pRegistry = CU_get_registry();
67 while ((iopt = getopt(argc, argv,
"s:t:")) != -1)
78 fprintf(stderr,
"Invalid argument for %s\n", argv[0]);
84 if (TestName && !SuiteName)
86 fprintf(stderr,
"A Suite name (-s) is required if you specify a test name.\n");
92 pSuite = CU_get_suite_by_name(SuiteName, pRegistry);
95 fprintf(stderr,
"Suite %s not found.\n", SuiteName);
101 pTest = CU_get_test_by_name(TestName, pSuite);
104 fprintf(stderr,
"Test %s not found in suite %s.\n", TestName, SuiteName);
107 ErrCode = CU_run_test(pSuite, pTest);
111 ErrCode = CU_run_suite(pSuite);
116 fprintf(stderr,
"Error: %s\n", CU_get_error_msg());
123 CU_set_output_filename(test_name);
124 CU_list_tests_to_file();
125 CU_automated_run_tests();
128 pRunSummary = CU_get_run_summary();
129 printf(
"%s summary:\n", test_name);
130 printf(
" Number of suites run: %d\n", pRunSummary->nSuitesRun);
131 printf(
" Number of suites failed: %d\n", pRunSummary->nSuitesFailed);
132 printf(
" Number of tests run: %d\n", pRunSummary->nTestsRun);
133 printf(
" Number of tests failed: %d\n", pRunSummary->nTestsFailed);
134 printf(
" Number of asserts: %d\n", pRunSummary->nAsserts);
135 printf(
" Number of asserts failed: %d\n", pRunSummary->nAssertsFailed);
136 printf(
" Number of failures: %d\n", pRunSummary->nFailureRecords);
140 if (pRunSummary->nFailureRecords)
142 printf(
"\nFailures:\n");
144 for (FailureList = CU_get_failure_list(); FailureList; FailureList = FailureList->pNext)
146 printf(
"%d. File: %s Line: %u",
148 FailureList->strFileName,
149 FailureList->uiLineNumber);
151 if (FailureList->pTest) {
152 printf(
" Test: %s", (FailureList->pTest)->pName);
154 if (FailureList->pSuite) {
155 printf(
" Suite: %s", (FailureList->pSuite)->pName);
159 FailureList->strCondition);
167 CU_cleanup_registry();
CU_SuiteInfo suites[]
all test suites for delagent