#include <string.h>
#include <ctype.h>
-REGISTER_TEST(tests_pass_valgrind);
-REGISTER_TEST(tests_pass_valgrind_noleaks);
-
/* Note: we already test safe_mode in run_tests.c */
static const char *can_run_vg(struct manifest *m)
{
return NULL;
}
+static void do_leakcheck_vg(struct manifest *m,
+ unsigned int *timeleft,
+ struct score *score);
+
+static struct ccanlint tests_pass_valgrind_noleaks = {
+ .key = "tests_pass_valgrind_noleaks",
+ .name = "Module's run and api tests have no memory leaks",
+ .check = do_leakcheck_vg,
+ .takes_options = true,
+ .needs = "tests_pass_valgrind"
+};
+REGISTER_TEST(tests_pass_valgrind_noleaks);
+
+
/* Example output:
==2749== Conditional jump or move depends on uninitialised value(s)
==2749== at 0x4026C60: strnlen (mc_replace_strmem.c:263)
/* FIXME: Run examples, too! */
static void do_run_tests_vg(struct manifest *m,
- bool keep,
unsigned int *timeleft,
struct score *score)
{
options = concat(score,
per_file_options(&tests_pass_valgrind,
i));
- if (streq(options, "FAIL"))
+ if (streq(options, "FAIL")) {
+ i->leak_info = NULL;
continue;
-
- if (keep)
- talloc_set_destructor(i->valgrind_log, NULL);
+ }
output = grab_file(i, i->valgrind_log, NULL);
/* No valgrind errors? */
}
static void do_leakcheck_vg(struct manifest *m,
- bool keep,
unsigned int *timeleft,
struct score *score)
{
concat(score,
per_file_options(&tests_pass_valgrind,
first->file)),
- first->file->compiled);
+ first->file->compiled[COMPILE_NORMAL]);
if (system(command))
doesnt_matter();
}
.takes_options = true,
.needs = "tests_pass"
};
-
-struct ccanlint tests_pass_valgrind_noleaks = {
- .key = "tests_pass_valgrind_noleaks",
- .name = "Module's run and api tests have no memory leaks",
- .check = do_leakcheck_vg,
- .takes_options = true,
- .needs = "tests_pass_valgrind"
-};
-
+REGISTER_TEST(tests_pass_valgrind);