ccanlint: really fix failing test logic.
authorRusty Russell <rusty@rustcorp.com.au>
Wed, 6 Oct 2010 03:29:08 +0000 (13:59 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Wed, 6 Oct 2010 03:29:08 +0000 (13:59 +1030)
Some of the compulsory tests don't have a total_score; treat that as "1".
And don't print out a score if the total is <= 1.

tools/ccanlint/ccanlint.c

index 00d5363ec9997a3d0d46fa881201e71c17a56542..d19ede6200e01ac2856c162f42c1c8f7c8936727 100644 (file)
@@ -107,7 +107,7 @@ static bool run_test(struct ccanlint *i,
                     struct manifest *m)
 {
        void *result;
-       unsigned int this_score, timeleft;
+       unsigned int this_score, max_score, timeleft;
        const struct dependent *d;
        const char *skip;
        bool bad, good;
@@ -143,22 +143,25 @@ static bool run_test(struct ccanlint *i,
                goto skip;
        }
 
+       max_score = i->total_score;
+       if (!max_score)
+               max_score = 1;
+
        if (!result)
-               this_score = i->total_score ? i->total_score : 1;
+               this_score = max_score;
        else if (i->score)
                this_score = i->score(m, result);
        else
                this_score = 0;
 
-       bad = (this_score == 0 && i->total_score != 0);
-       good = (this_score >= i->total_score);
+       bad = (this_score == 0);
+       good = (this_score >= max_score);
 
-       if (verbose || (bad && !quiet)) {
+       if (verbose || (!good && !quiet)) {
                printf("  %s: %s", i->name,
                       bad ? "FAIL" : good ? "PASS" : "PARTIAL");
-               if (i->total_score)
-                       printf(" (+%u/%u)",
-                                      this_score, i->total_score);
+               if (max_score > 1)
+                       printf(" (+%u/%u)", this_score, max_score);
                printf("\n");
        }
 
@@ -185,7 +188,7 @@ static bool run_test(struct ccanlint *i,
                        d->dependent->skip_fail = true;
                }
        }
-       return !bad;
+       return good;
 }
 
 static void register_test(struct list_head *h, struct ccanlint *test, ...)