From: Dale Weiler Date: Sun, 21 Apr 2013 06:36:52 +0000 (+0000) Subject: More preprocessor testsuite support and our first preprocessor test! X-Git-Tag: before-library~38 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=e27eebe0f9eb262baf7b6ce288c7ecb4fbcc591a;p=xonotic%2Fgmqcc.git More preprocessor testsuite support and our first preprocessor test! --- diff --git a/test.c b/test.c index 0ee3095..8247734 100644 --- a/test.c +++ b/test.c @@ -568,7 +568,7 @@ task_template_t *task_template_compile(const char *file, const char *dir, size_t if (tmpl->comparematch) con_err("template compile warning: %s erroneous tag `M:` when only failing\n", file); } else if (!strcmp(tmpl->proceduretype, "-pp")) { - if (!tmpl->executeflags) + if (tmpl->executeflags) con_err("template compile warning: %s erroneous tag `E:` when only preprocessing\n", file); if (!tmpl->comparematch) { con_err("template compile error: %s missing `M:` tag (use `$null` for exclude)\n", file); @@ -955,6 +955,13 @@ bool task_trymatch(task_template_t *tmpl, char ***line) { if (strrchr(data, '\n')) *strrchr(data, '\n') = '\0'; + /* + * If data is just null now, that means the line was an empty + * one and for that, we just ignore it. + */ + if (!*data) + continue; + if (vec_size(tmpl->comparematch) > compare) { if (strcmp(data, tmpl->comparematch[compare++])) success = false; @@ -986,12 +993,12 @@ bool task_trymatch(task_template_t *tmpl, char ***line) { const char *task_type(task_template_t *tmpl) { if (!strcmp(tmpl->proceduretype, "-pp")) - return "type: preprocessor test"; + return "type: preprocessor"; if (!strcmp(tmpl->proceduretype, "-execute")) - return "type: execution test"; + return "type: execution"; if (!strcmp(tmpl->proceduretype, "-compile")) - return "type: compile test"; - return "type: fail test"; + return "type: compile"; + return "type: fail"; } /* @@ -1085,13 +1092,17 @@ void task_schedualize(size_t *pad) { /* * If we made it here that concludes the task is to be executed - * in the virtual machine. + * in the virtual machine (or the preprocessor output needs to + * be matched). */ if (!task_trymatch(task_tasks[i].tmpl, &match)) { size_t d = 0; - con_err("failure: `%s` (invalid results from execution) [%s]\n", + con_err("failure: `%s` (invalid results from %s) [%s]\n", task_tasks[i].tmpl->description, + (strcmp(task_tasks[i].tmpl->proceduretype, "-pp")) + ? "execution" + : "preprocessing", task_tasks[i].tmpl->rulesfile ); diff --git a/tests/ppcat.qc b/tests/ppcat.qc new file mode 100644 index 0000000..2056632 --- /dev/null +++ b/tests/ppcat.qc @@ -0,0 +1,2 @@ +#define CAT(X, Y) X##Y +CAT(hello, world) diff --git a/tests/ppcat.tmpl b/tests/ppcat.tmpl new file mode 100644 index 0000000..8f28fdb --- /dev/null +++ b/tests/ppcat.tmpl @@ -0,0 +1,6 @@ +I: ppcat.qc +D: test preprocessor concatenation +T: -pp +C: -std=gmqcc +M: helloworld +F: -no-defs