X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fccanlint%2Ftests%2Fcompile_test_helpers.c;h=0ad5a7e67cc7847fb9bbc9c568ef403b7752eb7d;hp=0ab0cade7e96f427ad5d9f3f4dfdf7d336bf3941;hb=2926cafb52b9d95646d9dafa877d53f2368d8b2c;hpb=374d3d2eaa1b29dd3f3a940ca472bb209e95155d diff --git a/tools/ccanlint/tests/compile_test_helpers.c b/tools/ccanlint/tests/compile_test_helpers.c index 0ab0cade..0ad5a7e6 100644 --- a/tools/ccanlint/tests/compile_test_helpers.c +++ b/tools/ccanlint/tests/compile_test_helpers.c @@ -14,55 +14,62 @@ #include #include -static const char *can_build(struct manifest *m) +static const char *can_run(struct manifest *m) { if (safe_mode) return "Safe mode enabled"; return NULL; } -static char *compile(struct manifest *m, - bool keep, - struct ccan_file *cfile) +static bool compile(struct manifest *m, + bool keep, + struct ccan_file *cfile, + char **output) { cfile->compiled = maybe_temp_file(m, ".o", keep, cfile->fullname); return compile_object(m, cfile->fullname, ccan_dir, "", - cfile->compiled); + cfile->compiled, output); } -static void *do_compile_test_helpers(struct manifest *m, - bool keep, - unsigned int *timeleft) +static void do_compile_test_helpers(struct manifest *m, + bool keep, + unsigned int *timeleft, + struct score *score) { - char *cmdout = NULL; struct ccan_file *i; + bool errors = false, warnings = false; + + if (list_empty(&m->other_test_c_files)) + score->total = 0; + else + score->total = 2; - compile_tests.total_score = 0; list_for_each(&m->other_test_c_files, i, list) { - compile_tests.total_score++; - cmdout = compile(m, keep, i); - if (cmdout) - return talloc_asprintf(m, - "Failed to compile helper C" - " code file %s:\n%s", - i->name, cmdout); + char *cmdout; + + if (!compile(m, keep, i, &cmdout)) { + errors = true; + score->error = "Failed to compile helper C files"; + score_file_error(score, i, 0, cmdout); + } else if (!streq(cmdout, "")) { + warnings = true; + score->error = "Helper C files gave warnings"; + score_file_error(score, i, 0, cmdout); + } } - return NULL; -} -static const char *describe_compile_test_helpers(struct manifest *m, - void *check_result) -{ - return check_result; + if (!errors) { + score->pass = true; + score->score = score->total - warnings; + } } -struct ccanlint compile_test_helpers = { - .key = "compile-helpers", +struct ccanlint tests_helpers_compile = { + .key = "tests_helpers_compile", .name = "Module test helper objects compile", - .total_score = 1, .check = do_compile_test_helpers, - .describe = describe_compile_test_helpers, - .can_run = can_build, + .can_run = can_run, + .needs = "depends_build tests_exist" }; -REGISTER_TEST(compile_test_helpers, &depends_built, &has_tests, NULL); +REGISTER_TEST(tests_helpers_compile);