Author: brane
Date: Thu Jul  3 11:02:37 2025
New Revision: 1926937

URL: http://svn.apache.org/viewvc?rev=1926937&view=rev
Log:
In the SCons build, run unit tests separately by test suite.

* test/test_all.c: Reorder includes, putting system headers first.
  (main): Add a new flag -L that prints just the names of the test
   suites without details about the tests.

* build/check.py: Call 'test_all -L' to get the list of test suites, then
   invok each one of them separately. Don't exit after the first failure.
  (print_exception): Common handler for CalledProcessError exceptions.

Modified:
    serf/trunk/build/check.py
    serf/trunk/test/test_all.c

Modified: serf/trunk/build/check.py
URL: 
http://svn.apache.org/viewvc/serf/trunk/build/check.py?rev=1926937&r1=1926936&r2=1926937&view=diff
==============================================================================
--- serf/trunk/build/check.py (original)
+++ serf/trunk/build/check.py Thu Jul  3 11:02:37 2025
@@ -10,9 +10,9 @@
 #   to you under the Apache License, Version 2.0 (the
 #   "License"); you may not use this file except in compliance
 #   with the License.  You may obtain a copy of the License at
-# 
+#
 #     http://www.apache.org/licenses/LICENSE-2.0
-# 
+#
 #   Unless required by applicable law or agreed to in writing,
 #   software distributed under the License is distributed on an
 #   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -60,8 +60,25 @@ if __name__ == '__main__':
       sys.exit(1)
 
   print("== Running the unit tests ==")
+
+  fails = 0
+  def print_exception(x):
+    global fails
+    print("ERROR: test(s) failed in '%s', exit code=%d"
+          % (' '.join(x.cmd), x.returncode))
+    fails += 1
+
   try:
-    subprocess.check_call(TEST_ALL_EXE)
+    suites = subprocess.check_output([TEST_ALL_EXE, '-L']).decode()
+    for suite in suites.splitlines():
+      testcase = (TEST_ALL_EXE, suite.strip())
+      print("==== %s %s" % testcase)
+      try:
+        subprocess.check_call(testcase)
+      except subprocess.CalledProcessError as x:
+        print_exception(x)
   except subprocess.CalledProcessError as x:
-    print("ERROR: test(s) failed in '%s', exit code=%d" % (x.cmd, 
x.returncode))
+    print_exception(x)
+
+  if fails > 0:
     sys.exit(1)

Modified: serf/trunk/test/test_all.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/test/test_all.c?rev=1926937&r1=1926936&r2=1926937&view=diff
==============================================================================
--- serf/trunk/test/test_all.c (original)
+++ serf/trunk/test/test_all.c Thu Jul  3 11:02:37 2025
@@ -18,12 +18,12 @@
  * ====================================================================
  */
 
-#include "apr.h"
-#include "apr_pools.h"
+#include <stdlib.h>
+
+#include <apr.h>
 #include <apr_signal.h>
 
 #include "test_serf.h"
-#include <stdlib.h>
 
 static const struct testlist {
     const char *testname;
@@ -62,19 +62,22 @@ int main(int argc, char *argv[])
         if (!strcmp(argv[i], "-v")) {
             continue;
         }
-        if (!strcmp(argv[i], "-l")) {
+        if (!strcmp(argv[i], "-l") || !strcmp(argv[i], "-L")) {
+            const int details = !strcmp(argv[i], "-l");
             for (i = 0; tests[i].func != NULL; i++) {
                 CuSuite *suite;
-                int j = 0;
 
                 printf("%s\n", tests[i].testname);
-                suite = tests[i].func();
+                if (details) {
+                    int j;
 
-                for (j = 0; j < suite->count; j++) {
-                    printf("  %3d - %s\n", j+1, suite->list[j]->name);
-                }
+                    suite = tests[i].func();
+                    for (j = 0; j < suite->count; j++) {
+                        printf("  %3d - %s\n", j+1, suite->list[j]->name);
+                    }
 
-                printf("\n");
+                    printf("\n");
+                }
             }
             exit(0);
         }


Reply via email to