Blame test/test_all.c

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