]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - test.c
Added -config to usage and manpage, added a CONFIG section in the manpage describing...
[xonotic/gmqcc.git] / test.c
diff --git a/test.c b/test.c
index 54fb2aaf3794d2fef6598b799ba6f933039fe5f6..a3956e99c9c8d18183b8add937ec5c85f52259f7 100644 (file)
--- a/test.c
+++ b/test.c
@@ -25,7 +25,7 @@
 #include <sys/stat.h>
 #include <dirent.h>
 
-cmd_options opts;
+opts_cmd_t opts;
 
 char *task_bins[] = {
     "./gmqcc",
@@ -860,8 +860,12 @@ bool task_execute(task_template_t *template, char ***line) {
             if  (strrchr(data, '\n'))
                 *strrchr(data, '\n') = '\0';
 
-            if (strcmp(data, template->comparematch[compare++]))
-                success = false;
+            if (vec_size(template->comparematch) > compare) {
+                if (strcmp(data, template->comparematch[compare++]))
+                    success = false;
+            } else {
+                    success = false;
+            }
 
             /*
              * Copy to output vector for diagnostics if execution match
@@ -980,7 +984,10 @@ void task_schedualize() {
              * handler for the all the given matches in the template file and
              * what was actually returned from executing.
              */
-            con_err("    Expected From %u Matches:\n", vec_size(task_tasks[i].template->comparematch));
+            con_err("    Expected From %u Matches: (got %u Matches)\n",
+                vec_size(task_tasks[i].template->comparematch),
+                vec_size(match)
+            );
             for (; d < vec_size(task_tasks[i].template->comparematch); d++) {
                 char  *select = task_tasks[i].template->comparematch[d];
                 size_t length = 40 - strlen(select);
@@ -990,6 +997,21 @@ void task_schedualize() {
                     con_err(" ");
                 con_err("| Got: \"%s\"\n", (d >= vec_size(match)) ? "<<nothing else to compare>>" : match[d]);
             }
+
+            /*
+             * Print the non-expected out (since we are simply not expecting it)
+             * This will help track down bugs in template files that fail to match
+             * something.
+             */  
+            if (vec_size(match) > vec_size(task_tasks[i].template->comparematch)) {
+                for (d = 0; d < vec_size(match) - vec_size(task_tasks[i].template->comparematch); d++) {
+                    con_err("        Expected: Nothing                                   | Got: \"%s\"\n",
+                        match[d + vec_size(task_tasks[i].template->comparematch)]
+                    );
+                }
+            }
+                    
+
             for (j = 0; j < vec_size(match); j++)
                 mem_d(match[j]);
             vec_free(match);