From 7eb00644b848b551b2db5d9de40893e488c2790d Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Sat, 14 Feb 2009 13:32:43 +1030 Subject: [PATCH] Teach ccanlint about API tests. --- tools/ccanlint/ccanlint.h | 1 + tools/ccanlint/file_analysis.c | 5 ++++- tools/ccanlint/has_tests.c | 11 ++++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/tools/ccanlint/ccanlint.h b/tools/ccanlint/ccanlint.h index d536d6bf..ac169fa8 100644 --- a/tools/ccanlint/ccanlint.h +++ b/tools/ccanlint/ccanlint.h @@ -12,6 +12,7 @@ struct manifest { struct list_head h_files; struct list_head run_tests; + struct list_head api_tests; struct list_head compile_ok_tests; struct list_head compile_fail_tests; struct list_head other_test_files; diff --git a/tools/ccanlint/file_analysis.c b/tools/ccanlint/file_analysis.c index 663748e5..9513ab67 100644 --- a/tools/ccanlint/file_analysis.c +++ b/tools/ccanlint/file_analysis.c @@ -85,7 +85,9 @@ static void add_files(struct manifest *m, const char *dir) dest = &m->h_files; } else if (strstarts(f->name, "test/")) { if (is_c_src) { - if (strstarts(f->name, "test/run")) + if (strstarts(f->name, "test/api")) + dest = &m->api_tests; + else if (strstarts(f->name, "test/run")) dest = &m->run_tests; else if (strstarts(f->name, "test/compile_ok")) dest = &m->compile_ok_tests; @@ -135,6 +137,7 @@ struct manifest *get_manifest(void) m->info_file = NULL; list_head_init(&m->c_files); list_head_init(&m->h_files); + list_head_init(&m->api_tests); list_head_init(&m->run_tests); list_head_init(&m->compile_ok_tests); list_head_init(&m->compile_fail_tests); diff --git a/tools/ccanlint/has_tests.c b/tools/ccanlint/has_tests.c index aac1c20d..44ef64ab 100644 --- a/tools/ccanlint/has_tests.c +++ b/tools/ccanlint/has_tests.c @@ -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,7 +40,7 @@ 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" @@ -49,7 +51,10 @@ static const char *describe_has_tests(struct manifest *m, void *check_result) "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" + "compilation fail.\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.\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" -- 2.39.2