X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fccanlint%2Ftests%2Ftests_helpers_compile.c;fp=tools%2Fccanlint%2Ftests%2Ftests_helpers_compile.c;h=0ad5a7e67cc7847fb9bbc9c568ef403b7752eb7d;hp=0000000000000000000000000000000000000000;hb=051db34fb275491d4d5dfa5bf7970e8e525766d8;hpb=2926cafb52b9d95646d9dafa877d53f2368d8b2c diff --git a/tools/ccanlint/tests/tests_helpers_compile.c b/tools/ccanlint/tests/tests_helpers_compile.c new file mode 100644 index 00000000..0ad5a7e6 --- /dev/null +++ b/tools/ccanlint/tests/tests_helpers_compile.c @@ -0,0 +1,75 @@ +#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 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, output); +} + +static void do_compile_test_helpers(struct manifest *m, + bool keep, + unsigned int *timeleft, + struct score *score) +{ + struct ccan_file *i; + bool errors = false, warnings = false; + + if (list_empty(&m->other_test_c_files)) + score->total = 0; + else + score->total = 2; + + list_for_each(&m->other_test_c_files, i, list) { + 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); + } + } + + if (!errors) { + score->pass = true; + score->score = score->total - warnings; + } +} + +struct ccanlint tests_helpers_compile = { + .key = "tests_helpers_compile", + .name = "Module test helper objects compile", + .check = do_compile_test_helpers, + .can_run = can_run, + .needs = "depends_build tests_exist" +}; + +REGISTER_TEST(tests_helpers_compile);