X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fccanlint%2Ftests%2Ftests_pass.c;h=e1dfba6aee63534430895430cccaa183f63dcf90;hp=15df1ed69e7cefc8315a780cf47d3904732ab76d;hb=87c679ff36d7b198862cd2652a384d90f89f3b2b;hpb=ad6a6711a1b703793e49206e10d6dcf1722eb424 diff --git a/tools/ccanlint/tests/tests_pass.c b/tools/ccanlint/tests/tests_pass.c index 15df1ed6..e1dfba6a 100644 --- a/tools/ccanlint/tests/tests_pass.c +++ b/tools/ccanlint/tests/tests_pass.c @@ -46,13 +46,12 @@ static const char *concat(struct score *score, char *bits[]) return ret; } -static bool run_test(void *ctx, +static void run_test(void *ctx, struct manifest *m, - unsigned int *timeleft, char **cmdout, - struct ccan_file *i, - bool use_valgrind) + unsigned int *timeleft, + struct ccan_file *i) { - if (use_valgrind) { + if (do_valgrind) { const char *options; options = concat(ctx, per_file_options(&tests_pass_valgrind, i)); @@ -62,65 +61,57 @@ static bool run_test(void *ctx, * unreadable by humans *and* doesn't support * children reporting. */ i->valgrind_log = talloc_asprintf(m, - "%s.valgrind-log", - i->compiled); - talloc_set_destructor(i->valgrind_log, - unlink_file_destructor); - - return run_command(ctx, timeleft, cmdout, - "valgrind -q" - " --leak-check=full" - " --log-fd=3 %s %s" - " 3> %s", - options, - i->compiled, i->valgrind_log); + "%s.valgrind-log", + i->compiled[COMPILE_NORMAL]); + + run_command_async(i, *timeleft, + "valgrind -q" + " --leak-check=full" + " --log-fd=3 %s %s" + " 3> %s", + options, + i->compiled[COMPILE_NORMAL], + i->valgrind_log); + return; } } - return run_command(m, timeleft, cmdout, "%s", i->compiled); + run_command_async(i, *timeleft, "%s", + i->compiled[COMPILE_NORMAL]); } -static void run_tests(struct manifest *m, - bool keep, - unsigned int *timeleft, - struct score *score, - bool use_valgrind) +static void do_run_tests(struct manifest *m, + unsigned int *timeleft, + struct score *score) { struct list_head *list; struct ccan_file *i; char *cmdout; + bool ok; score->total = 0; foreach_ptr(list, &m->run_tests, &m->api_tests) { list_for_each(list, i, list) { score->total++; - if (run_test(score, m, timeleft, &cmdout, i, - use_valgrind)) - score->score++; - else - score_file_error(score, i, 0, "%s", cmdout); + if (verbose >= 2) + printf(" %s...\n", i->name); + run_test(score, m, timeleft, i); } } + while ((i = collect_command(&ok, &cmdout)) != NULL) { + if (!ok) + score_file_error(score, i, 0, "%s", cmdout); + else + score->score++; + if (verbose >= 2) + printf(" ...%s\n", i->name); + } + if (score->score == score->total) score->pass = true; } -static void do_run_tests(struct manifest *m, - bool keep, - unsigned int *timeleft, - struct score *score) -{ - run_tests(m, keep, timeleft, score, do_valgrind); -} - -static void do_run_tests_without_features(struct manifest *m, - bool keep, - unsigned int *timeleft, - struct score *score) -{ - run_tests(m, keep, timeleft, score, false); -} /* Gcc's warn_unused_result is fascist bullshit. */ #define doesnt_matter() @@ -136,7 +127,7 @@ static void run_under_debugger(struct manifest *m, struct score *score) return; command = talloc_asprintf(m, "gdb -ex 'break tap.c:139' -ex 'run' %s", - first->file->compiled); + first->file->compiled[COMPILE_NORMAL]); if (system(command)) doesnt_matter(); } @@ -151,13 +142,3 @@ struct ccanlint tests_pass = { }; REGISTER_TEST(tests_pass); - -struct ccanlint tests_pass_without_features = { - .key = "tests_pass_without_features", - .name = "Module's run and api tests pass (without features)", - .check = do_run_tests_without_features, - .handle = run_under_debugger, - .needs = "tests_compile_without_features" -}; - -REGISTER_TEST(tests_pass_without_features);