/* Copyright 2002-2007 Justin Erenkrantz and Greg Stein * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "apr.h" #include "apr_pools.h" #include "test_serf.h" #include static const struct testlist { const char *testname; CuSuite *(*func)(void); } tests[] = { {"context", test_context}, {"buckets", test_buckets}, {"ssl", test_ssl}, {"LastTest", NULL} }; int main(int argc, char *argv[]) { CuSuite *alltests = NULL; CuString *output = CuStringNew(); int i; int list_provided = 0; int exit_code; apr_initialize(); atexit(apr_terminate); for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-v")) { continue; } if (!strcmp(argv[i], "-l")) { for (i = 0; tests[i].func != NULL; i++) { printf("%s\n", tests[i].testname); } exit(0); } if (argv[i][0] == '-') { fprintf(stderr, "invalid option: `%s'\n", argv[i]); exit(1); } list_provided = 1; } alltests = CuSuiteNew(); if (!list_provided) { /* add everything */ for (i = 0; tests[i].func != NULL; i++) { CuSuite *st = tests[i].func(); CuSuiteAddSuite(alltests, st); CuSuiteFree(st); } } else { /* add only the tests listed */ for (i = 1; i < argc; i++) { int j; int found = 0; if (argv[i][0] == '-') { continue; } for (j = 0; tests[j].func != NULL; j++) { if (!strcmp(argv[i], tests[j].testname)) { CuSuiteAddSuite(alltests, tests[j].func()); found = 1; } } if (!found) { fprintf(stderr, "invalid test name: `%s'\n", argv[i]); exit(1); } } } CuSuiteRun(alltests); CuSuiteSummary(alltests, output); CuSuiteDetails(alltests, output); printf("%s\n", output->buffer); exit_code = alltests->failCount > 0 ? 1 : 0; CuSuiteFreeDeep(alltests); CuStringFree(output); return exit_code; }