From: Rusty Russell Date: Thu, 28 May 2009 04:04:27 +0000 (+0930) Subject: Make ccanlint tests all positive: ie. "has _info.c file: FAILED". X-Git-Url: https://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=15290c3feb9b61967311659a865fb3b5d05b1a49;hp=c1daa044b22fce3ca80d3430e3e1ad9360f8a4f1 Make ccanlint tests all positive: ie. "has _info.c file: FAILED". --- diff --git a/tools/ccanlint/Makefile b/tools/ccanlint/Makefile index d236346f..87ff2d0e 100644 --- a/tools/ccanlint/Makefile +++ b/tools/ccanlint/Makefile @@ -1,4 +1,4 @@ -OBJS := tools/ccanlint/no_info.o \ +OBJS := tools/ccanlint/has_info.o \ tools/ccanlint/has_main_header.o \ tools/ccanlint/has_tests.o \ tools/ccanlint/trailing_whitespace.o \ diff --git a/tools/ccanlint/has_info.c b/tools/ccanlint/has_info.c new file mode 100644 index 00000000..563eb2f6 --- /dev/null +++ b/tools/ccanlint/has_info.c @@ -0,0 +1,78 @@ +#include "ccanlint.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static void *check_has_info(struct manifest *m) +{ + if (m->info_file) + return NULL; + return m; +} + +static const char *describe_has_info(struct manifest *m, void *check_result) +{ + return "You have no _info.c file.\n\n" + "The file _info.c contains the metadata for a ccan package: things\n" + "like the dependencies, the documentation for the package as a whole\n" + "and license information.\n"; +} + +static const char template[] = + "#include \n" + "#include \"config.h\"\n" + "\n" + "/**\n" + " * %s - YOUR-ONE-LINE-DESCRIPTION-HERE\n" + " *\n" + " * This code ... YOUR-BRIEF-SUMMARY-HERE\n" + " *\n" + " * Example:\n" + " * FULLY-COMPILABLE-INDENTED-TRIVIAL-BUT-USEFUL-EXAMPLE-HERE\n" + " */\n" + "int main(int argc, char *argv[])\n" + "{\n" + " /* Expect exactly one argument */\n" + " if (argc != 2)\n" + " return 1;\n" + "\n" + " if (strcmp(argv[1], \"depends\") == 0) {\n" + " PRINTF-CCAN-PACKAGES-YOU-NEED-ONE-PER-LINE-IF-ANY\n" + " return 0;\n" + " }\n" + "\n" + " return 1;\n" + "}\n"; + +static void create_info_template(struct manifest *m, void *check_result) +{ + FILE *info; + + if (!ask("Should I create a template _info.c file for you?")) + return; + + info = fopen("_info.c", "w"); + if (!info) + err(1, "Trying to create a template _info.c"); + + if (fprintf(info, template, m->basename) < 0) { + unlink_noerr("_info.c"); + err(1, "Writing template into _info.c"); + } + fclose(info); +} + +struct ccanlint has_info = { + .name = "Has _info.c file", + .check = check_has_info, + .describe = describe_has_info, + .handle = create_info_template, +}; diff --git a/tools/ccanlint/no_info.c b/tools/ccanlint/no_info.c deleted file mode 100644 index 1ac925cf..00000000 --- a/tools/ccanlint/no_info.c +++ /dev/null @@ -1,78 +0,0 @@ -#include "ccanlint.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static void *check_no_info(struct manifest *m) -{ - if (m->info_file) - return NULL; - return m; -} - -static const char *describe_no_info(struct manifest *m, void *check_result) -{ - return "You have no _info.c file.\n\n" - "The file _info.c contains the metadata for a ccan package: things\n" - "like the dependencies, the documentation for the package as a whole\n" - "and license information.\n"; -} - -static const char template[] = - "#include \n" - "#include \"config.h\"\n" - "\n" - "/**\n" - " * %s - YOUR-ONE-LINE-DESCRIPTION-HERE\n" - " *\n" - " * This code ... YOUR-BRIEF-SUMMARY-HERE\n" - " *\n" - " * Example:\n" - " * FULLY-COMPILABLE-INDENTED-TRIVIAL-BUT-USEFUL-EXAMPLE-HERE\n" - " */\n" - "int main(int argc, char *argv[])\n" - "{\n" - " /* Expect exactly one argument */\n" - " if (argc != 2)\n" - " return 1;\n" - "\n" - " if (strcmp(argv[1], \"depends\") == 0) {\n" - " PRINTF-CCAN-PACKAGES-YOU-NEED-ONE-PER-LINE-IF-ANY\n" - " return 0;\n" - " }\n" - "\n" - " return 1;\n" - "}\n"; - -static void create_info_template(struct manifest *m, void *check_result) -{ - FILE *info; - - if (!ask("Should I create a template _info.c file for you?")) - return; - - info = fopen("_info.c", "w"); - if (!info) - err(1, "Trying to create a template _info.c"); - - if (fprintf(info, template, m->basename) < 0) { - unlink_noerr("_info.c"); - err(1, "Writing template into _info.c"); - } - fclose(info); -} - -struct ccanlint no_info = { - .name = "No _info.c file", - .check = check_no_info, - .describe = describe_no_info, - .handle = create_info_template, -}; diff --git a/tools/ccanlint/trailing_whitespace.c b/tools/ccanlint/trailing_whitespace.c index 537e955e..96ab0d9d 100644 --- a/tools/ccanlint/trailing_whitespace.c +++ b/tools/ccanlint/trailing_whitespace.c @@ -40,7 +40,7 @@ static const char *describe_trailing_whitespace(struct manifest *m, } struct ccanlint trailing_whitespace = { - .name = "Lines with unnecessary trailing whitespace", + .name = "No lines with unnecessary trailing whitespace", .total_score = 1, .check = check_trailing_whitespace, .describe = describe_trailing_whitespace,