X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fccanlint%2Ftests%2Ftrailing_whitespace.c;h=2a301ea8b1c077af8bb369e1d2c64cf893080a8d;hp=f522d316e5c406742dc0e344be450114d83ca5f1;hb=f9423c171395571f9880286190d9cf63da147668;hpb=8f61c0bccb152b2365baf70deac1e59264d7feb7 diff --git a/tools/ccanlint/tests/trailing_whitespace.c b/tools/ccanlint/tests/trailing_whitespace.c index f522d316..2a301ea8 100644 --- a/tools/ccanlint/tests/trailing_whitespace.c +++ b/tools/ccanlint/tests/trailing_whitespace.c @@ -1,9 +1,11 @@ /* Trailing whitespace test. Almost embarrassing, but trivial. */ #include #include +#include #include -static char *report_on_trailing_whitespace(const char *line) +/* FIXME: only print full analysis if verbose >= 2. */ +static char *get_trailing_whitespace(const char *line) { const char *e = strchr(line, 0); while (e>line && (e[-1]==' ' || e[-1]=='\t')) @@ -19,29 +21,39 @@ static char *report_on_trailing_whitespace(const char *line) return talloc_asprintf(line, "'%s'", line); } -static void *check_trailing_whitespace(struct manifest *m) +static void check_trailing_whitespace(struct manifest *m, + bool keep, + unsigned int *timeleft, + struct score *score) { - char *report; + struct list_head *list; + struct ccan_file *f; + unsigned int i; - report = report_on_lines(&m->c_files, report_on_trailing_whitespace, - NULL); - report = report_on_lines(&m->h_files, report_on_trailing_whitespace, - report); - - return report; -} - -static const char *describe_trailing_whitespace(struct manifest *m, - void *check_result) -{ - return talloc_asprintf(check_result, - "Some source files have trailing whitespace:\n" - "%s", (char *)check_result); + foreach_ptr(list, &m->c_files, &m->h_files) { + list_for_each(list, f, list) { + char **lines = get_ccan_file_lines(f); + for (i = 0; i < f->num_lines; i++) { + char *err = get_trailing_whitespace(lines[i]); + if (err) { + score->error = "Trailing whitespace" + " found"; + score_file_error(score, f, i+1, err); + } + } + } + } + if (!score->error) { + score->pass = true; + score->score = score->total; + } } struct ccanlint trailing_whitespace = { - .name = "No lines with unnecessary trailing whitespace", - .total_score = 1, + .key = "no_trailing_whitespace", + .name = "Module's source code has no trailing whitespace", .check = check_trailing_whitespace, - .describe = describe_trailing_whitespace, }; + + +REGISTER_TEST(trailing_whitespace, NULL);