]> git.ozlabs.org Git - ccan/blobdiff - tools/ccanlint/has_tests.c
Major cleanup of makefiles, api tests.
[ccan] / tools / ccanlint / has_tests.c
index 4a8d14b3287b3dc2b471e6308c830305bd45f4d7..320478b38da61424727c093bece2032c55c5528f 100644 (file)
@@ -8,7 +8,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <err.h>
-#include <talloc/talloc.h>
+#include <ccan/talloc/talloc.h>
 
 static char test_is_not_dir[] = "test is not a directory";
 
@@ -25,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
@@ -38,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"