You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2012/12/16 18:11:53 UTC

git commit: [SUREFIRE-933] repair parallel=classes

Updated Branches:
  refs/heads/master 38f1c75f9 -> 435ef473b


[SUREFIRE-933] repair parallel=classes


Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/435ef473
Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/435ef473
Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/435ef473

Branch: refs/heads/master
Commit: 435ef473be35f69dbb0c3187ecf7b54e3f87f49a
Parents: 38f1c75
Author: agudian <an...@gmail.com>
Authored: Sat Dec 15 21:42:09 2012 +0100
Committer: Kristian Rosenvold <kr...@apache.org>
Committed: Sun Dec 16 17:55:00 2012 +0100

----------------------------------------------------------------------
 .../apache/maven/surefire/util/LazyTestsToRun.java |    7 ++
 .../org/apache/maven/surefire/util/TestsToRun.java |    9 ++
 .../maven/surefire/junitcore/JUnitCoreWrapper.java |   79 +++++++++------
 .../surefire/testng/TestNGDirectoryTestSuite.java  |    2 +-
 4 files changed, 67 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/435ef473/surefire-api/src/main/java/org/apache/maven/surefire/util/LazyTestsToRun.java
----------------------------------------------------------------------
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/LazyTestsToRun.java b/surefire-api/src/main/java/org/apache/maven/surefire/util/LazyTestsToRun.java
index 3a6dba7..996797c 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/LazyTestsToRun.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/util/LazyTestsToRun.java
@@ -173,4 +173,11 @@ public class LazyTestsToRun
         return sb.toString();
     }
 
+    /* (non-Javadoc)
+     * @see org.apache.maven.surefire.util.TestsToRun#allowEagerReading()
+     */
+    public boolean allowEagerReading() {
+        return false;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/435ef473/surefire-api/src/main/java/org/apache/maven/surefire/util/TestsToRun.java
----------------------------------------------------------------------
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/TestsToRun.java b/surefire-api/src/main/java/org/apache/maven/surefire/util/TestsToRun.java
index 86e43d9..02224ab 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/TestsToRun.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/util/TestsToRun.java
@@ -116,4 +116,13 @@ public class TestsToRun
         return containsAtLeast( it, items ) && !it.hasNext();
     }
 
+    /**
+     * @return {@code true}, if the classes may be read eagerly. {@code false},
+     * if the classes must only be read lazy.
+     */
+    public boolean allowEagerReading()
+    {
+        return true;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/435ef473/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java
index 0608ab4..c834e6f 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java
@@ -19,6 +19,7 @@ package org.apache.maven.surefire.junitcore;
  * under the License.
  */
 
+import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
@@ -26,7 +27,6 @@ import java.util.concurrent.ExecutionException;
 import org.apache.maven.surefire.common.junit4.JUnit4RunListener;
 import org.apache.maven.surefire.testset.TestSetFailedException;
 import org.apache.maven.surefire.util.TestsToRun;
-
 import org.junit.runner.Computer;
 import org.junit.runner.JUnitCore;
 import org.junit.runner.Request;
@@ -77,39 +77,18 @@ class JUnitCoreWrapper
         Computer computer = getComputer( jUnitCoreParameters );
 
         JUnitCore junitCore = createJUnitCore( listeners );
-        /*
-                Request req = Request.classes( computer, testsToRun.getLocatedClasses() );
-        if ( filter != null )
-        {
-            req = req.filterWith( filter );
-        }
-
-        try
-        {
-            final Result run = junitCore.run( req );
-            JUnit4RunListener.rethrowAnyTestMechanismFailures( run );
-        }
 
-         */
         try
         {
-            // in order to support LazyTestsToRun, the iterator must be used
-            Iterator classIter = testsToRun.iterator();
-            while ( classIter.hasNext() )
+            if ( testsToRun.allowEagerReading() )
             {
-                Request req = Request.classes( computer, new Class[]{ (Class) classIter.next() } );
-                if ( filter != null )
-                {
-                    req = new FilteringRequest( req, filter );
-                    if ( req.getRunner() == null )
-                    {
-                        continue;
-                    }
-                }
-
-                final Result run = junitCore.run( req );
-                JUnit4RunListener.rethrowAnyTestMechanismFailures( run );
+                executeEager( testsToRun, filter, computer, junitCore );
             }
+            else
+            {
+                exeuteLazy( testsToRun, filter, computer, junitCore );
+            }
+            
         }
         finally
         {
@@ -121,6 +100,48 @@ class JUnitCoreWrapper
         }
     }
 
+    private static void executeEager(TestsToRun testsToRun, Filter filter, Computer computer, JUnitCore junitCore)
+            throws TestSetFailedException 
+    {
+        List<Class<?>> testList = new ArrayList<Class<?>>(500);
+        Iterator<?> classIter = testsToRun.iterator();
+
+        while ( classIter.hasNext() )
+        {
+            testList.add((Class<?>) classIter.next());
+        }
+        createReqestAndRun( filter, computer, junitCore, testList.toArray( new Class[ testList.size() ] ) );
+    }
+
+    private static void exeuteLazy(TestsToRun testsToRun, Filter filter, Computer computer, JUnitCore junitCore)
+            throws TestSetFailedException
+    {
+        // in order to support LazyTestsToRun, the iterator must be used
+        Iterator<?> classIter = testsToRun.iterator();
+        while ( classIter.hasNext() )
+        {
+            createReqestAndRun( filter, computer, junitCore, new Class[]{ (Class<?>) classIter.next() } );
+        }
+    }
+
+    private static void createReqestAndRun( Filter filter, Computer computer, JUnitCore junitCore, Class<?>[] classesToRun )
+            throws TestSetFailedException
+    {
+        Request req = Request.classes( computer, classesToRun );
+        if ( filter != null )
+        {
+            req = new FilteringRequest( req, filter );
+            if ( req.getRunner() == null )
+            {
+                // nothing to run
+                return;
+            }
+        }
+
+        final Result run = junitCore.run( req );
+        JUnit4RunListener.rethrowAnyTestMechanismFailures( run );
+    }
+
     private static void closeIfConfigurable( Computer computer )
         throws TestSetFailedException
     {

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/435ef473/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java
index f4fc9f9..d04e77c 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java
@@ -96,7 +96,7 @@ public class TestNGDirectoryTestSuite
         throws ReporterException, TestSetFailedException
     {
 
-        if ( testsToRun instanceof LazyTestsToRun )
+        if ( !testsToRun.allowEagerReading() )
         {
             executeLazy( testsToRun, reporterManagerFactory );
         }