static int clay_test(int argc, char **argv) { clay_print_init( (int)_clay_callback_count, (int)_clay_suite_count, "" ); if (clay_sandbox() < 0) { clay_print_onabort("Failed to sandbox the test runner.\n"); exit(-1); } clay_on_init(); if (argc > 1) { clay_parse_args(argc, argv); } else { size_t i; for (i = 0; i < _clay_suite_count; ++i) clay_run_suite(&_clay_suites[i]); } clay_print_shutdown( _clay.test_count, (int)_clay_suite_count, _clay.total_errors ); clay_on_shutdown(); clay_unsandbox(); return _clay.total_errors; }
static void clay_parse_args(int argc, char **argv) { int i; for (i = 1; i < argc; ++i) { char *argument = argv[i]; char action; int num; if (argument[0] != '-') clay_usage(argv[0]); action = argument[1]; num = strtol(argument + 2, &argument, 10); if (*argument != '\0' || num < 0) clay_usage(argv[0]); switch (action) { case 's': if ((size_t)num >= _clay_suite_count) { clay_print_onabort("Suite number %d does not exist.\n", num); exit(-1); } clay_run_suite(&_clay_suites[num]); break; default: clay_usage(argv[0]); } } }
static void clay_parse_args( int argc, char **argv, const struct clay_func *callbacks, size_t cb_count, const struct clay_suite *suites, size_t suite_count) { int i; for (i = 1; i < argc; ++i) { char *argument = argv[i]; char action; int num; if (argument[0] != '-') clay_usage(argv[0]); action = argument[1]; num = strtol(argument + 2, &argument, 10); if (*argument != '\0' || num < 0) clay_usage(argv[0]); switch (action) { case 't': if ((size_t)num >= cb_count) { fprintf(stderr, "Test number %d does not exist.\n", num); exit(-1); } clay_print("Started (%s::%s)\n", suites[callbacks[num].suite_n].name, callbacks[num].name); clay_run_single(&callbacks[num], &suites[callbacks[num].suite_n]); break; case 's': if ((size_t)num >= suite_count) { fprintf(stderr, "Suite number %d does not exist.\n", num); exit(-1); } clay_print("Started (%s::*)\n", suites[num].name); clay_run_suite(&suites[num]); break; default: clay_usage(argv[0]); } } }
static int clay_test( int argc, char **argv, const char *suites_str, const struct clay_func *callbacks, size_t cb_count, const struct clay_suite *suites, size_t suite_count) { clay_print("Loaded %d suites: %s\n", (int)suite_count, suites_str); if (clay_sandbox() < 0) { fprintf(stderr, "Failed to sandbox the test runner.\n" "Testing will proceed without sandboxing.\n"); } if (argc > 1) { clay_parse_args(argc, argv, callbacks, cb_count, suites, suite_count); } else { size_t i; clay_print("Started\n"); for (i = 0; i < suite_count; ++i) { const struct clay_suite *s = &suites[i]; clay_run_suite(s); } } clay_print("\n\n"); clay_report_errors(); clay_unsandbox(); return _clay.total_errors; }