#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>
/* 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;
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;
foreach_ptr(fmt, "outputs '%s'", "outputs \"%s\"") {
if (scan_for(file, p, fmt, &expect)) {
- *input = "";
+ *input = cast_const(char *, "");
*exact = true;
return expect;
}
"outputs \"%s\"",
"outputs %s") {
if (scan_for(file, p, fmt, &expect)) {
- *input = "";
+ *input = cast_const(char *, "");
*exact = true;
return expect;
}
"output contains \"%s\"",
"output contains %s") {
if (scan_for(file, p, fmt, &expect)) {
- *input = "";
+ *input = cast_const(char *, "");
*exact = false;
return expect;
}
unsigned int default_time = default_timeout_ms;
cmd = talloc_asprintf(i, "echo '%s' | %s %s",
- input, i->compiled, input);
+ input, i->compiled[COMPILE_NORMAL], input);
output = run_with_timeout(i, cmd, &ok, &default_time);
if (!ok)
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);