X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=tools%2Fccanlint%2Ftests%2Fhas_info_documentation.c;fp=tools%2Fccanlint%2Ftests%2Fhas_info_documentation.c;h=0000000000000000000000000000000000000000;hb=051db34fb275491d4d5dfa5bf7970e8e525766d8;hp=a5316fe00d0ae3dba4a2a2287a51ce1dfeb17faa;hpb=2926cafb52b9d95646d9dafa877d53f2368d8b2c;p=ccan diff --git a/tools/ccanlint/tests/has_info_documentation.c b/tools/ccanlint/tests/has_info_documentation.c deleted file mode 100644 index a5316fe0..00000000 --- a/tools/ccanlint/tests/has_info_documentation.c +++ /dev/null @@ -1,102 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -extern struct ccanlint info_documentation_exists; - -static void create_info_template_doc(struct manifest *m, struct score *score) -{ - int fd = open("_info.new", O_WRONLY|O_CREAT|O_EXCL, 0666); - FILE *new; - char *oldcontents; - - if (fd < 0 || !(new = fdopen(fd, "w"))) - err(1, "Creating _info.new to insert documentation"); - - if (fprintf(new, - "/**\n" - " * %s - [[ONE LINE DESCRIPTION HERE]]\n" - " *\n" - " * Paragraphs why %s exists and where to use it.\n" - " *\n" - " * Followed by an Example: section with a standalone\n" - " * (trivial and usually useless) program\n" - " */\n", m->basename, m->basename) < 0) { - unlink_noerr("_info.new"); - err(1, "Writing to _info.new to insert documentation"); - } - - oldcontents = grab_file(m, "_info", NULL); - if (!oldcontents) { - unlink_noerr("_info.new"); - err(1, "Reading _info"); - } - if (fprintf(new, "%s", oldcontents) < 0) { - unlink_noerr("_info.new"); - err(1, "Appending _info to _info.new"); - } - if (fclose(new) != 0) { - unlink_noerr("_info.new"); - err(1, "Closing _info.new"); - } - if (!move_file("_info.new", "_info")) { - unlink_noerr("_info.new"); - err(1, "Renaming _info.new to _info"); - } -} - -static void check_info_documentation_exists(struct manifest *m, - bool keep, - unsigned int *timeleft, - struct score *score) -{ - struct list_head *infodocs = get_ccan_file_docs(m->info_file); - struct doc_section *d; - bool summary = false, description = false; - - list_for_each(infodocs, d, list) { - if (!streq(d->function, m->basename)) - continue; - if (streq(d->type, "summary")) - summary = true; - if (streq(d->type, "description")) - description = true; - } - - if (summary && description) { - score->score = score->total; - score->pass = true; - } else if (!summary) { - score->error = "_info file has no module documentation.\n\n" - "CCAN modules use /**-style comments for documentation: the\n" - "overall documentation belongs in the _info metafile.\n"; - info_documentation_exists.handle = create_info_template_doc; - } else if (!description) { - score->error = "_info file has no module description.\n\n" - "The lines after the first summary line in the _info file\n" - "documentation should describe the purpose and use of the\n" - "overall package\n"; - } -} - -struct ccanlint info_documentation_exists = { - .key = "info_documentation_exists", - .name = "Module has documentation in _info", - .check = check_info_documentation_exists, - .needs = "info_exists" -}; - -REGISTER_TEST(info_documentation_exists);