blob: 98f59bfcdfdd89af2c442a5dff55c6ca2d6adb22 [file] [log] [blame]
/* 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 <stdlib.h>
/* Top-level pool which can be used by tests. */
apr_pool_t *test_pool;
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);
apr_pool_create(&test_pool, NULL);
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);
apr_pool_destroy(test_pool);
return exit_code;
}