X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=tools%2Fccanlint%2Fcompulsory_tests%2Fcheck_depends_exist.c;h=12eaf021410153c5567ea1abd22a98afa5ba0b51;hb=2926cafb52b9d95646d9dafa877d53f2368d8b2c;hp=bb6067edcd8bb16169d73e46c4d542e3c9f9fbeb;hpb=304652023042670b3173de0ad5dc0eb7c836618c;p=ccan diff --git a/tools/ccanlint/compulsory_tests/check_depends_exist.c b/tools/ccanlint/compulsory_tests/check_depends_exist.c index bb6067ed..12eaf021 100644 --- a/tools/ccanlint/compulsory_tests/check_depends_exist.c +++ b/tools/ccanlint/compulsory_tests/check_depends_exist.c @@ -14,29 +14,30 @@ #include #include -static char *add_dep(char *sofar, struct manifest *m, const char *dep) +static bool add_dep(struct manifest *m, const char *dep, struct score *score) { - char *dir; struct stat st; - struct ccan_file *f; + struct manifest *subm; + char *dir = talloc_asprintf(m, "%s/%s", ccan_dir, dep); - dir = talloc_asprintf(m, "%s/%s", ccan_dir, dep); + /* FIXME: get_manifest has a tendency to exit. */ if (stat(dir, &st) != 0) { - return talloc_asprintf_append(sofar, - "ccan/%s: expected it in" - " directory %s\n", - dep, dir); + score->error + = talloc_asprintf(m, + "Could not stat dependency %s: %s", + dir, strerror(errno)); + return false; } - - f = new_ccan_file(m, "", dir); - list_add_tail(&m->dep_dirs, &f->list); - return sofar; + subm = get_manifest(m, dir); + list_add_tail(&m->deps, &subm->list); + return true; } -static void *check_depends_exist(struct manifest *m, unsigned int *timeleft) +static void check_depends_exist(struct manifest *m, + bool keep, + unsigned int *timeleft, struct score *score) { unsigned int i; - char *report = NULL; char **deps; char *updir = talloc_strdup(m, m->dir); @@ -52,25 +53,26 @@ static void *check_depends_exist(struct manifest *m, unsigned int *timeleft) if (!strstarts(deps[i], "ccan/")) continue; - report = add_dep(report, m, deps[i]); + if (!add_dep(m, deps[i], score)) + return; } - return report; -} -static const char *describe_depends_exist(struct manifest *m, - void *check_result) -{ - return talloc_asprintf(check_result, - "The following dependencies are are expected:\n" - "%s", (char *)check_result); + /* We may need libtap for testing, unless we're "tap" */ + if (!streq(m->basename, "tap") + && (!list_empty(&m->run_tests) || !list_empty(&m->api_tests))) { + if (!add_dep(m, "ccan/tap", score)) + return; + } + + score->pass = true; + score->score = score->total; } struct ccanlint depends_exist = { - .key = "depends-exist", - .name = "Module's CCAN dependencies are present", - .total_score = 1, + .key = "depends_exist", + .name = "Module's CCAN dependencies can be found", .check = check_depends_exist, - .describe = describe_depends_exist, + .needs = "info_exists" }; -REGISTER_TEST(depends_exist, NULL); +REGISTER_TEST(depends_exist);