]> git.ozlabs.org Git - ccan/commitdiff
ccanlint: remove wart from info options.
authorRusty Russell <rusty@rustcorp.com.au>
Fri, 2 Dec 2011 03:37:20 +0000 (14:07 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Fri, 2 Dec 2011 03:37:20 +0000 (14:07 +1030)
Make info_exists() call add_info_options() directly, rather than detecting
that we've found _info inside the loop of tests.

It means targeting is now a global, which is a bit sucky.

tools/ccanlint/ccanlint.c
tools/ccanlint/ccanlint.h
tools/ccanlint/tests/info_exists.c

index d80c11d1594dde2a0db1e23093618d0d5d89c61c..fd7e0c719001af2d0a58f26f04e3fa0d19465989 100644 (file)
@@ -41,6 +41,7 @@ TLIST_TYPE(ccanlint, struct ccanlint);
 int verbose = 0;
 static struct tlist_ccanlint tests = TLIST_INIT(tests);
 bool safe_mode = false;
+static bool targeting = false;
 static struct btree *cmdline_exclude;
 static struct btree *info_exclude;
 static unsigned int timeout;
@@ -421,7 +422,7 @@ static void add_options(struct ccanlint *test, char **options,
        memcpy(&test->options[num], options, (num_options + 1)*sizeof(char *));
 }
 
-static void add_info_options(struct ccan_file *info, bool mark_fails)
+void add_info_options(struct ccan_file *info)
 {
        struct doc_section *d;
        unsigned int i;
@@ -456,7 +457,7 @@ static void add_info_options(struct ccan_file *info, bool mark_fails)
 
                        /* Known failure? */
                        if (strcasecmp(words[1], "FAIL") == 0) {
-                               if (mark_fails)
+                               if (!targeting)
                                        btree_insert(info_exclude, words[0]);
                        } else {
                                if (!test->takes_options)
@@ -698,7 +699,6 @@ int main(int argc, char *argv[])
 
        for (i = 1; i < argc; i++) {
                unsigned int score, total_score;
-               bool added_info_options = false;
 
                dir = argv[i];
 
@@ -748,12 +748,6 @@ int main(int argc, char *argv[])
                                        goto next;
                                }
                        }
-
-                       /* --target overrides known FAIL from _info */
-                       if (!added_info_options && m->info_file) {
-                               add_info_options(m->info_file, !target);
-                               added_info_options = true;
-                       }
                }
 
                printf("%sTotal score: %u/%u\n", prefix, score, total_score);
index 16600cff4d0e83411b9c6aab1e5722fc718838c8..6fdc021673f8597d74add9a40c6c91f904d3e060 100644 (file)
@@ -264,6 +264,9 @@ struct dependent {
 /* Is this test excluded (cmdline or _info). */
 bool is_excluded(const char *name);
 
+/* Called to add options from _info, once it's located. */
+void add_info_options(struct ccan_file *info);
+
 /* Are we happy to compile stuff, or just non-intrusive tests? */
 extern bool safe_mode;
 
index 80edb5aa911b25c868407d3114e97fce44f63bc3..5e04bd8d42b6cf91cf04f2ef928e9d940446337e 100644 (file)
@@ -20,6 +20,7 @@ static void check_has_info(struct manifest *m,
        if (m->info_file) {
                score->pass = true;
                score->score = score->total;
+               add_info_options(m->info_file);
        } else {
                score->error = talloc_strdup(score,
        "You have no _info file.\n\n"