]> git.rm.cloudns.org Git - xonotic/gmqcc.git/commitdiff
Implemened -fail procedure type for testsuite. Essentially performs compilation...
authorDale Weiler <killfieldengine@gmail.com>
Wed, 19 Dec 2012 21:35:47 +0000 (21:35 +0000)
committerDale Weiler <killfieldengine@gmail.com>
Wed, 19 Dec 2012 21:35:47 +0000 (21:35 +0000)
test.c

diff --git a/test.c b/test.c
index a3956e99c9c8d18183b8add937ec5c85f52259f7..8d3cedc0264f18eb39158a70d8ac2a57ff119c18 100644 (file)
--- a/test.c
+++ b/test.c
@@ -157,7 +157,7 @@ int task_pclose(FILE **handles) {
     return status;
 }
 #else
-
+#error "There is no support for windows yet ... this is not a FTBFS bug"
 #endif
 
 #define TASK_COMPILE 0
@@ -201,6 +201,9 @@ int task_pclose(FILE **handles) {
  *                  This simply performs compilation only
  *              -execute
  *                  This will perform compilation and execution
+ *              -fail
+ *                  This will perform compileration, but requires
+ *                  the compilation to fail .. inorder to succeed.   
  *
  *          This must be provided, this tag is NOT optional.
  *
@@ -521,6 +524,12 @@ task_template_t *task_template_compile(const char *file, const char *dir) {
             con_err("template compile error: %s missing `M:` tag (use `$null` for exclude)\n", file);
             goto failure;
         }
+    } else if (!strcmp(template->proceduretype, "-fail")) {
+        if (template->executeflags)
+            con_err("template compile warning: %s erroneous tag `E:` when only failing\n", file);
+        if (template->comparematch)
+            con_err("template compile warning: %s erroneous tag `M:` when only failing\n", file);
+        goto success;
     } else {
         con_err("template compile error: %s invalid procedure type: %s\n", file, template->proceduretype);
         goto failure;
@@ -769,9 +778,10 @@ void task_destroy(const char *curdir) {
 
         /*
          * Only remove the log files if the test actually compiled otherwise
-         * forget about it.
+         * forget about it (or if it didn't compile, and the procedure type
+         * was set to -fail (meaning it shouldn't compile) .. stil remove) 
          */
-        if (task_tasks[i].compiled) {
+        if (task_tasks[i].compiled || !strcmp(task_tasks[i].template->proceduretype, "-fail")) {
             if (remove(task_tasks[i].stdoutlogfile))
                 con_err("error removing stdout log file: %s\n", task_tasks[i].stdoutlogfile);
             else
@@ -946,7 +956,7 @@ void task_schedualize() {
             fflush(task_tasks[i].stdoutlog);
         }
 
-        if (!task_tasks[i].compiled) {
+        if (!task_tasks[i].compiled && strcmp(task_tasks[i].template->proceduretype, "-fail")) {
             con_err("test failure: `%s` [%s] (failed to compile) see %s.stdout and %s.stderr\n",
                 task_tasks[i].template->description,
                 (task_tasks[i].template->failuremessage) ?