diff mx/commands.py @ 8343:a3c30d467f96

unittest: just do a single JVM call avoid multiple executions of the JVM in order to avoid high startup costs. before: > mx --vm server unittest 355.86s user 2.97s system 175% cpu 3:24.21 total > mx --vm server longunittest 241.27s user 1.40s system 151% cpu 2:39.88 total > mx --vm server shortunittest 203.36s user 2.23s system 269% cpu 1:16.42 total after: > mx --vm server unittest 202.39s user 1.02s system 130% cpu 2:36.04 total > mx --vm server longunittest 187.39s user 0.97s system 126% cpu 2:28.38 total > mx --vm server shortunittest 87.39s user 0.68s system 265% cpu 33.15 total
author Bernhard Urban <bernhard.urban@jku.at>
date Mon, 18 Mar 2013 15:11:52 +0100
parents d9d883aeb96f
children 2bfb9644dcc2
line wrap: on
line diff
--- a/mx/commands.py	Thu Mar 14 16:27:08 2013 +0100
+++ b/mx/commands.py	Mon Mar 18 15:11:52 2013 +0100
@@ -730,22 +730,24 @@
                 return True
         return False
 
+    classes = []
     for p in mx.projects():
-        classes = _find_classes_with_annotations(p, None, annotations)
+        classes += _find_classes_with_annotations(p, None, annotations)
 
         if len(pos) != 0:
             classes = [c for c in classes if containsAny(c, pos)]
         if len(neg) != 0:
             classes = [c for c in classes if not containsAny(c, neg)]
 
-        if len(classes) != 0:
-            mx.log('running tests in ' + p.name)
-            harness(p, vmArgs, classes)
+    projectscp = mx.classpath([pcp.name for pcp in mx.projects()])
+
+    if len(classes) != 0:
+        harness(projectscp, vmArgs, classes)
 
 def _unittest(args, annotations):
-    def harness(p, vmArgs, classes):
+    def harness(projectscp, vmArgs, classes):
         prefixArgs = ['-XX:-BootstrapGraal', '-esa', '-ea']
-        vm(prefixArgs + vmArgs + ['-cp', mx.classpath(p.name), 'org.junit.runner.JUnitCore'] + classes)
+        vm(prefixArgs + vmArgs + ['-cp', projectscp, 'org.junit.runner.JUnitCore'] + classes)
     _run_tests(args, harness, annotations)
 
 def unittest(args):