X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fccanlint%2Fccanlint.c;h=15d131e20073c2106ec2963d07a2ed76c5492730;hp=6bfc6d15bd1debf7ad7355da0ce3ba2181e2dde8;hb=db43894721895d0ec0a8e599440a9897136bfcb6;hpb=2421664fb0d146fd500a0def4368fee9f8f2fdf9 diff --git a/tools/ccanlint/ccanlint.c b/tools/ccanlint/ccanlint.c index 6bfc6d15..15d131e2 100644 --- a/tools/ccanlint/ccanlint.c +++ b/tools/ccanlint/ccanlint.c @@ -149,26 +149,8 @@ static bool run_test(struct ccanlint *i, } if ((!quiet && !score->pass) || verbose) { - struct file_error *f; - unsigned int lines = 1; - if (score->error) - printf("%s%s\n", score->error, - list_empty(&score->per_file_errors) ? "" : ":"); - - list_for_each(&score->per_file_errors, f, list) { - if (f->line) - printf("%s:%u:%s\n", - f->file->fullname, f->line, f->error); - else if (f->file) - printf("%s:%s\n", f->file->fullname, f->error); - else - printf("%s\n", f->error); - if (verbose < 2 && ++lines > 5) { - printf("... more (use -vv to see them all)\n"); - break; - } - } + printf("%s", score->error); if (!quiet && !score->pass && i->handle) i->handle(m, score); } @@ -256,7 +238,7 @@ static void init_tests(void) /* Resolve dependencies. */ foreach_ptr(list, &compulsory_tests, &normal_tests) { list_for_each(list, c, list) { - char **deps = strsplit(NULL, c->needs, " ", NULL); + char **deps = strsplit(NULL, c->needs, " "); unsigned int i; for (i = 0; deps[i]; i++) { @@ -310,12 +292,31 @@ static void init_tests(void) } } +static int show_tmpdir(char *dir) +{ + printf("You can find ccanlint working files in '%s'\n", dir); + return 0; +} + static char *keep_test(const char *testname, void *unused) { - struct ccanlint *i = find_test(testname); - if (!i) - errx(1, "No test %s to --keep", testname); - i->keep_results = true; + struct ccanlint *i; + + if (streq(testname, "all")) { + struct list_head *list; + foreach_ptr(list, &compulsory_tests, &normal_tests) { + list_for_each(list, i, list) + i->keep_results = true; + } + } else { + i = find_test(testname); + if (!i) + errx(1, "No test %s to --keep", testname); + i->keep_results = true; + } + + /* Don't automatically destroy temporary dir. */ + talloc_set_destructor(temp_dir(NULL), show_tmpdir); return NULL; } @@ -409,8 +410,8 @@ static void add_info_options(struct ccan_file *info, bool mark_fails) continue; for (i = 0; i < d->num_lines; i++) { - char **words = collapse(strsplit(d, d->lines[i], " \t", - NULL), NULL); + char **words = collapse(strsplit(d, d->lines[i], " \t"), + NULL); if (!words[0]) continue; @@ -495,7 +496,8 @@ int main(int argc, char *argv[]) opt_register_noarg("--test-dep-graph", test_dependency_graph, NULL, "print dependency graph of tests in Graphviz .dot format"); opt_register_arg("-k|--keep ", keep_test, NULL, NULL, - "keep results of (can be used multiple times)"); + "keep results of " + " (can be used multiple times, or 'all')"); opt_register_noarg("--summary|-s", opt_set_bool, &summary, "simply give one line summary"); opt_register_noarg("--verbose|-v", opt_inc_intval, &verbose, @@ -513,10 +515,16 @@ int main(int argc, char *argv[]) " of CCAN modules.", "This usage message"); + /* We move into temporary directory, so gcov dumps its files there. */ + if (chdir(temp_dir(talloc_autofree_context())) != 0) + err(1, "Error changing to %s temporary dir", temp_dir(NULL)); + opt_parse(&argc, argv, opt_log_stderr_exit); if (dir[0] != '/') dir = talloc_asprintf_append(NULL, "%s/%s", base_dir, dir); + while (strends(dir, "/")) + dir[strlen(dir)-1] = '\0'; if (dir != base_dir) prefix = talloc_append_string(talloc_basename(NULL, dir), ": "); if (verbose >= 3) @@ -524,10 +532,6 @@ int main(int argc, char *argv[]) if (verbose >= 4) tools_verbose = true; - /* We move into temporary directory, so gcov dumps its files there. */ - if (chdir(temp_dir(talloc_autofree_context())) != 0) - err(1, "Error changing to %s temporary dir", temp_dir(NULL)); - m = get_manifest(talloc_autofree_context(), dir); /* Create a symlink from temp dir back to src dir's test directory. */