Author: rhuijben
Date: Mon Nov 23 17:53:34 2015
New Revision: 1715904

URL: http://svn.apache.org/viewvc?rev=1715904&view=rev
Log:
* test/test_all.c
  (main): Allow running specific tests.
    E.g. $ test_all server#test_listen_http server#test_listen_http2

Modified:
    serf/trunk/test/test_all.c

Modified: serf/trunk/test/test_all.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/test/test_all.c?rev=1715904&r1=1715903&r2=1715904&view=diff
==============================================================================
--- serf/trunk/test/test_all.c (original)
+++ serf/trunk/test/test_all.c Mon Nov 23 17:53:34 2015
@@ -99,14 +99,45 @@ int main(int argc, char *argv[])
         for (i = 1; i < argc; i++) {
             int j;
             int found = 0;
+            const char *sh;
+            apr_size_t len;
 
             if (argv[i][0] == '-') {
                 continue;
             }
+
+            sh = strchr(argv[i], '#');
+            if (!sh)
+                len = strlen(argv[i]);
+            else {
+                len = sh - argv[i];
+                sh++;
+            }
+
+            /* ### We leak ram on specific function names.
+                   Patches welcome :) */
             for (j = 0; tests[j].func != NULL; j++) {
-                if (!strcmp(argv[i], tests[j].testname)) {
-                    CuSuiteAddSuite(alltests, tests[j].func());
-                    found = 1;
+
+                if (strncmp(argv[i], tests[j].testname, len) == 0
+                    && tests[j].testname[len] == '\0')
+                {
+                    CuSuite *suite = tests[j].func();
+
+                    if (sh) {
+                        int k, m = 0;
+
+                        for (k = 0; k < suite->count; k++) {
+                            if (!strcmp(suite->list[k]->name, sh)) {
+                                suite->list[m++] = suite->list[k];
+                            }
+                        }
+                        suite->count = m;
+                    }
+
+                    if (suite->count) {
+                        CuSuiteAddSuite(alltests, suite);
+                        found = 1;
+                    }
                 }
             }
             if (!found) {


Reply via email to