]> git.ozlabs.org Git - ccan/blobdiff - tools/ccanlint/tests/examples_run.c
tools: use tal instead of talloc.
[ccan] / tools / ccanlint / tests / examples_run.c
index 3cb456d49fa69d38f073f76229aa706b1ccb8e5a..0e473ca4050d142d1845563f3ea9a1e742f37629 100644 (file)
@@ -1,8 +1,8 @@
 #include <tools/ccanlint/ccanlint.h>
 #include <tools/tools.h>
-#include <ccan/talloc/talloc.h>
 #include <ccan/foreach/foreach.h>
 #include <ccan/str/str.h>
+#include <ccan/cast/cast.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
@@ -26,7 +26,7 @@ static const char *can_run(struct manifest *m)
 
 /* Very dumb scanner, allocates %s-strings. */
 static bool scan_forv(const void *ctx,
-                     const char *input, const char *fmt, const va_list *args)
+                     const char *input, const char *fmt, va_list *args)
 {
        va_list ap;
        bool ret;
@@ -36,10 +36,10 @@ static bool scan_forv(const void *ctx,
 
        va_copy(ap, *args);
 
-       if (isspace(fmt[0])) {
+       if (cisspace(fmt[0])) {
                /* One format space can swallow many input spaces */
                ret = false;
-               while (isspace(input[0])) {
+               while (cisspace(input[0])) {
                        if (scan_forv(ctx, ++input, fmt+1, &ap)) {
                                ret = true;
                                break;
@@ -59,7 +59,7 @@ static bool scan_forv(const void *ctx,
                for (len = 1; input[len-1]; len++) {
                        ret = scan_forv(ctx, input + len, fmt+2, &ap);
                        if (ret) {
-                               *p = talloc_strndup(ctx, input, len);
+                               *p = tal_strndup(ctx, input, len);
                                ret = true;
                                break;
                        }
@@ -116,7 +116,7 @@ static char *find_expect(struct ccan_file *file,
 
                foreach_ptr(fmt, "outputs '%s'", "outputs \"%s\"") {
                        if (scan_for(file, p, fmt, &expect)) {
-                               *input = "";
+                               *input = cast_const(char *, "");
                                *exact = true;
                                return expect;
                        }
@@ -173,7 +173,7 @@ static char *find_expect(struct ccan_file *file,
                            "outputs \"%s\"",
                            "outputs %s") {
                        if (scan_for(file, p, fmt, &expect)) {
-                               *input = "";
+                               *input = cast_const(char *, "");
                                *exact = true;
                                return expect;
                        }
@@ -184,7 +184,7 @@ static char *find_expect(struct ccan_file *file,
                            "output contains \"%s\"",
                            "output contains %s") {
                        if (scan_for(file, p, fmt, &expect)) {
-                               *input = "";
+                               *input = cast_const(char *, "");
                                *exact = false;
                                return expect;
                        }
@@ -207,12 +207,12 @@ static char *unexpected(struct ccan_file *i, const char *input,
        bool ok;
        unsigned int default_time = default_timeout_ms;
 
-       cmd = talloc_asprintf(i, "echo '%s' | %s %s",
-                             input, i->compiled, input);
+       cmd = tal_fmt(i, "echo '%s' | %s %s",
+                     input, i->compiled[COMPILE_NORMAL], input);
 
        output = run_with_timeout(i, cmd, &ok, &default_time);
        if (!ok)
-               return talloc_asprintf(i, "Exited with non-zero status\n");
+               return tal_fmt(i, "Exited with non-zero status\n");
 
        if (exact) {
                if (streq(output, expect) || streq(trim(output), expect))
@@ -224,7 +224,7 @@ static char *unexpected(struct ccan_file *i, const char *input,
        return output;
 }
 
-static void run_examples(struct manifest *m, bool keep,
+static void run_examples(struct manifest *m,
                         unsigned int *timeleft, struct score *score)
 {
        struct ccan_file *i;
@@ -247,35 +247,33 @@ static void run_examples(struct manifest *m, bool keep,
                             linenum++,
                                     expect = find_expect(i, lines, &input,
                                                          &exact, &linenum)) {
-                               char *err;
-                               score->total++;
-                               if (i->compiled == NULL)
+                               if (i->compiled[COMPILE_NORMAL] == NULL)
                                        continue;
 
+                               score->total++;
                                output = unexpected(i, input, expect, exact);
                                if (!output) {
                                        score->score++;
                                        continue;
                                }
-                               err = talloc_asprintf(score,
-                                                     "output '%s' didn't"
-                                                     " %s '%s'\n",
-                                                     output,
-                                                     exact
-                                                     ? "match" : "contain",
-                                                     expect);
-                               score_file_error(score, i, linenum+1, err);
+                               score_file_error(score, i, linenum+1,
+                                                "output '%s' didn't %s '%s'\n",
+                                                output,
+                                                exact ? "match" : "contain",
+                                                expect);
                                score->pass = false;
                        }
                }
        }
 }
 
+/* FIXME: Test with reduced features, valgrind! */
 struct ccanlint examples_run = {
-       .key = "examples-run",
+       .key = "examples_run",
        .name = "Module examples with expected output give that output",
        .check = run_examples,
        .can_run = can_run,
+       .needs = "examples_compile"
 };
 
-REGISTER_TEST(examples_run, &examples_compile, NULL);
+REGISTER_TEST(examples_run);