X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fccanlint%2Fhas_tests.c;h=0866869570c2e71b1f21a3d7eff5574fec33db51;hp=7a187ab273a6187defb5e2269f9d0689758d6ad4;hb=02005621033206078929b388f13afc69a6688094;hpb=650c775ff00cccd03fc84e7789a03c51d9839004 diff --git a/tools/ccanlint/has_tests.c b/tools/ccanlint/has_tests.c index 7a187ab2..08668695 100644 --- a/tools/ccanlint/has_tests.c +++ b/tools/ccanlint/has_tests.c @@ -8,9 +8,7 @@ #include #include #include -#include -#include -#include +#include static char test_is_not_dir[] = "test is not a directory"; @@ -27,7 +25,9 @@ static void *check_has_tests(struct manifest *m) if (!S_ISDIR(st.st_mode)) return test_is_not_dir; - if (list_empty(&m->run_tests) && list_empty(&m->compile_ok_tests)) { + if (list_empty(&m->api_tests) + && list_empty(&m->run_tests) + && list_empty(&m->compile_ok_tests)) { if (list_empty(&m->compile_fail_tests)) return "You have no tests in the test directory"; else @@ -40,18 +40,29 @@ static const char *describe_has_tests(struct manifest *m, void *check_result) { return talloc_asprintf(m, "%s\n\n" "CCAN modules have a directory called test/ which contains tests.\n" - "There are three kinds of tests: run, compile_ok and compile_fail:\n" + "There are four kinds of tests: api, run, compile_ok and compile_fail:\n" "you can tell which type of test a C file is by its name, eg 'run.c'\n" "and 'run-simple.c' are both run tests.\n\n" + "The simplest kind of test is a run test, which must compile with no\n" "warnings, and then run: it is expected to use libtap to report its\n" - "results in a simple and portable format.\n" + "results in a simple and portable format. It should #include the C\n" + "files from the module directly (so it can probe the internals): the\n" + "module will not be linked in.\n\n" + + "api tests are just like a run test, except it is a guarantee of API\n" + "stability: this test should pass on all future versions of the\n" + "module. They *are* linked to the module, since they should only\n" + "test the API, not the internal state.\n\n" + "compile_ok tests are a subset of run tests: they must compile and\n" - "link, but aren't run.\n" + "link, but aren't run.\n\n" + "compile_fail tests are tests which should fail to compile (or emit\n" "warnings) or link when FAIL is defined, but should compile and link\n" "when it's not defined: this helps ensure unrelated errors don't make\n" "compilation fail.\n\n" + "Note that the tests are not linked against the files in the\n" "above: you should directly #include those C files you want. This\n" "allows access to static functions and use special effects inside\n" @@ -69,7 +80,7 @@ static void handle_no_tests(struct manifest *m, void *check_result) if (!ask("Should I create a template test/run.c file for you?")) return; - if (mkdir("test", 0600) != 0) { + if (mkdir("test", 0700) != 0) { if (errno != EEXIST) err(1, "Creating test/ directory"); }