X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fccanlint%2Ftests%2Ftests_pass_valgrind.c;h=f17fbca4f9b7fa633e1c6e2a045d36f5284586c7;hp=4c4338b6c1c6d3ab20ad9e93a61cdf3da8361c78;hb=6fb1663de7c1650a20bae6ca4e496e5a04130b41;hpb=100444225380d3f5ca29424ea54703d308c7c651 diff --git a/tools/ccanlint/tests/tests_pass_valgrind.c b/tools/ccanlint/tests/tests_pass_valgrind.c index 4c4338b6..f17fbca4 100644 --- a/tools/ccanlint/tests/tests_pass_valgrind.c +++ b/tools/ccanlint/tests/tests_pass_valgrind.c @@ -17,7 +17,7 @@ #include #include -struct ccanlint run_tests_vg; +REGISTER_TEST(tests_pass_valgrind); /* Note: we already test safe_mode in run_tests.c */ static const char *can_run_vg(struct manifest *m) @@ -112,11 +112,12 @@ static void do_run_tests_vg(struct manifest *m, * humans, and you can't have both. */ run_command(score, timeleft, &cmdout, "valgrind -q --error-exitcode=101" + " --child-silent-after-fork=yes" " --leak-check=full" " --log-fd=3 %s %s" " 3> valgrind.log", - run_tests_vg.options ? - run_tests_vg.options : "", + tests_pass_valgrind.options ? + tests_pass_valgrind.options : "", i->compiled); output = grab_file(i, "valgrind.log", NULL); if (!output || output[0] == '\0') { @@ -126,7 +127,7 @@ static void do_run_tests_vg(struct manifest *m, i->leak_info = get_leaks(output, &err); } if (err) - score_file_error(score, i, 0, err); + score_file_error(score, i, 0, "%s", err); else score->score++; } @@ -148,15 +149,17 @@ static void do_leakcheck_vg(struct manifest *m, foreach_ptr(list, &m->run_tests, &m->api_tests) { list_for_each(list, i, list) { if (i->leak_info) { - score_file_error(score, i, 0, i->leak_info); + score_file_error(score, i, 0, "%s", + i->leak_info); leaks = true; } } } + /* FIXME: We don't fail for this, since many tests leak. */ + score->pass = true; if (!leaks) { score->score = 1; - score->pass = true; } } @@ -173,8 +176,8 @@ static void run_under_debugger_vg(struct manifest *m, struct score *score) first = list_top(&score->per_file_errors, struct file_error, list); command = talloc_asprintf(m, "valgrind --db-attach=yes%s %s", - run_tests_vg.options ? - run_tests_vg.options : "", + tests_pass_valgrind.options ? + tests_pass_valgrind.options : "", first->file->compiled); if (system(command)) doesnt_matter(); @@ -190,8 +193,6 @@ struct ccanlint tests_pass_valgrind = { .needs = "tests_pass" }; -REGISTER_TEST(tests_pass_valgrind); - struct ccanlint tests_pass_valgrind_noleaks = { .key = "tests_pass_valgrind_noleaks", .name = "Module's run and api tests have no memory leaks",