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/10 19:47:38 UTC

git commit: [SUREFIRE-934] remove getLocatedClasses() and size() from TestsToRun

Updated Branches:
  refs/heads/master 06801079f -> f35f1efb5


[SUREFIRE-934] remove getLocatedClasses() and size() from TestsToRun

..,  to avoid potential programming errors with forkMode=onceperthread


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

Branch: refs/heads/master
Commit: f35f1efb55696b0202ff042d5d1058c5c5b3cc73
Parents: 0680107
Author: agudian <an...@gmail.com>
Authored: Sun Dec 9 23:17:53 2012 +0100
Committer: Kristian Rosenvold <kr...@apache.org>
Committed: Mon Dec 10 19:41:09 2012 +0100

----------------------------------------------------------------------
 .../surefire/util/DefaultRunOrderCalculator.java   |    9 ++++-
 .../apache/maven/surefire/util/LazyTestsToRun.java |   19 ---------
 .../org/apache/maven/surefire/util/TestsToRun.java |   10 -----
 .../apache/maven/surefire/util/TestsToRunTest.java |   12 +++--
 .../surefire/testng/TestNGDirectoryTestSuite.java  |   30 ++++++++++----
 5 files changed, 36 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/f35f1efb/surefire-api/src/main/java/org/apache/maven/surefire/util/DefaultRunOrderCalculator.java
----------------------------------------------------------------------
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/DefaultRunOrderCalculator.java b/surefire-api/src/main/java/org/apache/maven/surefire/util/DefaultRunOrderCalculator.java
index 52ad510..b1950c4 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/DefaultRunOrderCalculator.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/util/DefaultRunOrderCalculator.java
@@ -24,6 +24,7 @@ import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.Iterator;
 import java.util.List;
 import org.apache.maven.plugin.surefire.runorder.RunEntryStatisticsMap;
 import org.apache.maven.surefire.testset.RunOrderParameters;
@@ -54,7 +55,13 @@ public class DefaultRunOrderCalculator
 
     public TestsToRun orderTestClasses( TestsToRun scannedClasses )
     {
-        List result = new ArrayList( Arrays.asList( scannedClasses.getLocatedClasses() ) );
+        
+        List result = new ArrayList( 500 );
+        
+        for ( Iterator it = scannedClasses.iterator(); it.hasNext(); )
+        {
+            result.add(it.next());
+        }
 
         orderTestClasses( result, runOrder.length != 0 ? runOrder[0] : null );
         return new TestsToRun( result );

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/f35f1efb/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 874c971..3a6dba7 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
@@ -36,9 +36,6 @@ import org.apache.maven.surefire.booter.ForkingRunListener;
  * {@link #iterator()} returns an Iterator that blocks on calls to
  * {@link Iterator#hasNext()} until new classes are available, or no more
  * classes will be available.
- * <p/>
- * The methods {@link #getLocatedClasses()} and {@link #size()} will throw an
- * {@link UnsupportedOperationException}.
  *
  * @author Andreas Gudian
  */
@@ -161,22 +158,6 @@ public class LazyTestsToRun
         return new BlockingIterator();
     }
 
-    /**
-     * Unsupported. Use {@link #iterator()} instead.
-     */
-    public int size()
-    {
-        throw new UnsupportedOperationException( "use method iterator()" );
-    }
-
-    /**
-     * Unsupported. Use {@link #iterator()} instead.
-     */
-    public Class[] getLocatedClasses()
-    {
-        throw new UnsupportedOperationException( "use method iterator()" );
-    }
-
     /* (non-Javadoc)
       * @see org.apache.maven.surefire.util.TestsToRun#toString()
       */

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/f35f1efb/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 734783e..210aa5a 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
@@ -64,16 +64,6 @@ public class TestsToRun
         return new TestsToRun( Arrays.asList( new Class[]{ clazz } ) );
     }
 
-    public int size()
-    {
-        return locatedClasses.size();
-    }
-
-    public Class[] getLocatedClasses()
-    {
-        return (Class[]) locatedClasses.toArray( new Class[locatedClasses.size()] );
-    }
-
     /**
      * Returns an iterator over the located java.lang.Class objects
      *

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/f35f1efb/surefire-api/src/test/java/org/apache/maven/surefire/util/TestsToRunTest.java
----------------------------------------------------------------------
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/util/TestsToRunTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/util/TestsToRunTest.java
index 8aacfb1..d0a0ca0 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/TestsToRunTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/util/TestsToRunTest.java
@@ -20,6 +20,7 @@ package org.apache.maven.surefire.util;
  */
 
 import java.util.Arrays;
+import java.util.Iterator;
 
 import junit.framework.TestCase;
 
@@ -34,11 +35,12 @@ public class TestsToRunTest
         throws Exception
     {
         TestsToRun testsToRun = new TestsToRun( Arrays.asList( new Class[]{ T1.class, T2.class } ) );
-        assertEquals( 2, testsToRun.size() );
-        Class[] stringJUnitCoreTestSetMap = testsToRun.getLocatedClasses();
-        assertEquals( stringJUnitCoreTestSetMap[0], T1.class );
-        assertEquals( stringJUnitCoreTestSetMap[1], T2.class );
-        assertEquals( 2, stringJUnitCoreTestSetMap.length );
+        Iterator it = testsToRun.iterator();
+        assertTrue( it.hasNext() );
+        assertEquals( it.next(), T1.class );
+        assertTrue( it.hasNext() );
+        assertEquals( it.next(), T2.class );
+        assertFalse( it.hasNext() );
     }
 
     class T1

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/f35f1efb/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 78b2e64..899cade 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
@@ -100,17 +100,32 @@ public class TestNGDirectoryTestSuite
         {
             executeLazy( testsToRun, reporterManagerFactory );
         }
-        else if ( testsToRun.size() > 1 )
+        else if ( containsAtLeast( testsToRun, 2 ) )
         {
             executeMulti( testsToRun, reporterManagerFactory );
         }
-        else if ( testsToRun.size() == 1 )
+        else if ( containsAtLeast( testsToRun, 1 ) )
         {
             Class testClass = (Class) testsToRun.iterator().next();
             executeSingleClass( reporterManagerFactory, testClass );
         }
     }
+    
+    private boolean containsAtLeast( TestsToRun testsToRun, int atLeast ) {
+        Iterator it = testsToRun.iterator();
+        for ( int i = 0; i < atLeast; i++ )
+        {
+            if ( !it.hasNext() )
+            {
+                return false;
+            }
 
+            it.next();
+        }
+        
+        return true;
+    }
+    
     private void executeSingleClass( ReporterFactory reporterManagerFactory, Class testClass )
         throws TestSetFailedException
     {
@@ -159,10 +174,9 @@ public class TestNGDirectoryTestSuite
     {
         List testNgTestClasses = new ArrayList();
         List junitTestClasses = new ArrayList();
-        Class[] allClasses = testsToRun.getLocatedClasses();
-        for ( int i = 0; i < allClasses.length; i++ )
+        for ( Iterator it = testsToRun.iterator(); it.hasNext(); )
         {
-            Class c = allClasses[i];
+            Class c = (Class) it.next();
             if ( isJUnitTest( c ) )
             {
                 junitTestClasses.add( c );
@@ -181,7 +195,6 @@ public class TestNGDirectoryTestSuite
             junitReportsDirectory = new File( reportsDirectory, "testng-junit-results" );
         }
 
-//        RunListener reporterManager = new SynchronizedReporterManager( reporterFactory.createReporter() );
         RunListener reporterManager = reporterFactory.createReporter();
         ConsoleOutputCapture.startCapture( (ConsoleOutputReceiver) reporterManager );
         startTestSuite( reporterManager, this );
@@ -303,11 +316,10 @@ public class TestNGDirectoryTestSuite
         final TestsToRun scanned = scanResult.applyFilter( new NonAbstractClassFilter(), classLoader );
 
         final TestsToRun testsToRun = runOrderCalculator.orderTestClasses( scanned );
-        Class[] locatedClasses = testsToRun.getLocatedClasses();
 
-        for ( int i = 0; i < locatedClasses.length; i++ )
+        for ( Iterator it = testsToRun.iterator(); it.hasNext(); )
         {
-            Class testClass = locatedClasses[i];
+            Class testClass = (Class) it.next();
             TestNGTestSet testSet = new TestNGTestSet( testClass );
 
             if ( testSets.containsKey( testSet.getName() ) )