X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fccanlint%2Ftests%2Frun_tests.c;fp=tools%2Fccanlint%2Ftests%2Frun_tests.c;h=e996c4e2607f9e24aab424659b039bc5ccacade6;hp=0000000000000000000000000000000000000000;hb=4e0dfdadf206c74dc9e5f302545b2419cc4798f4;hpb=3f011090d857a625f9eccfca6dd33d1b897417a8 diff --git a/tools/ccanlint/tests/run_tests.c b/tools/ccanlint/tests/run_tests.c new file mode 100644 index 00000000..e996c4e2 --- /dev/null +++ b/tools/ccanlint/tests/run_tests.c @@ -0,0 +1,90 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static const char *can_run(struct manifest *m) +{ + if (safe_mode) + return "Safe mode enabled"; + return NULL; +} + +static void *do_run_tests(struct manifest *m) +{ + struct list_head *list = talloc(m, struct list_head); + char *failures = talloc_strdup(m, ""); + struct ccan_file *i; + + list_head_init(list); + + run_tests.total_score = 0; + list_for_each(&m->run_tests, i, list) { + char *testout; + run_tests.total_score++; + /* FIXME: timeout here */ + testout = run_command(m, i->compiled); + if (!testout) + continue; + failures = talloc_asprintf_append(failures, + "Running %s failed:\n", + i->name); + failures = talloc_append_string(failures, testout); + } + + list_for_each(&m->api_tests, i, list) { + char *testout; + run_tests.total_score++; + /* FIXME: timeout here */ + testout = run_command(m, i->compiled); + if (!testout) + continue; + failures = talloc_asprintf_append(failures, + "Running %s failed:\n", + i->name); + failures = talloc_append_string(failures, testout); + } + + if (streq(failures, "")) { + talloc_free(failures); + failures = NULL; + } + + return failures; +} + +static unsigned int score_run_tests(struct manifest *m, void *check_result) +{ + /* FIXME: be cleverer here */ + return 0; +} + +static const char *describe_run_tests(struct manifest *m, + void *check_result) +{ + char *descrip = talloc_strdup(check_result, "Running tests failed:\n"); + + return talloc_append_string(descrip, check_result); +} + +struct ccanlint run_tests = { + .name = "run and api tests run successfully", + .total_score = 1, + .score = score_run_tests, + .check = do_run_tests, + .describe = describe_run_tests, + .can_run = can_run, +}; + +REGISTER_TEST(run_tests, &compile_tests, NULL);