Author: krosenvold Date: Mon Jun 6 19:47:23 2011 New Revision: 1132734 URL: http://svn.apache.org/viewvc?rev=1132734&view=rev Log: [SUREFIRE-744] NPE with multiple class-level ignores for parallel runner.
Main patch by Aslak Knutsen, applied unmodified. Prefered to extend existing integration test over the unit test included in the issue patch Added: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/pom.xml (contents, props changed) - copied, changed from r1126721, maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/pom.xml maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/BasicTest.java - copied, changed from r1126721, maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/java/junit44/ignore/BasicTest.java maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/ClassLevelIgnore1Test.java - copied, changed from r1126721, maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/java/junit44/ignore/BasicTest.java maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/ClassLevelIgnore2Test.java (contents, props changed) - copied, changed from r1126721, maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/java/junit44/ignore/BasicTest.java Removed: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/pom.xml maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/java/junit44/ignore/BasicTest.java Modified: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Junit4IgnoreIT.java maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.java Modified: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Junit4IgnoreIT.java URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Junit4IgnoreIT.java?rev=1132734&r1=1132733&r2=1132734&view=diff ============================================================================== --- maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Junit4IgnoreIT.java (original) +++ maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Junit4IgnoreIT.java Mon Jun 6 19:47:23 2011 @@ -29,7 +29,7 @@ public class Junit4IgnoreIT { public Junit4IgnoreIT() { - super( "/junit44-ignore"); + super( "/junit-ignore"); } public void testJunit4Ignore() @@ -37,6 +37,18 @@ public class Junit4IgnoreIT { executeTest(); verifyErrorFreeLog(); - assertTestSuiteResults( 1, 0, 0, 1 ); + assertTestSuiteResults( 3, 0, 0, 3 ); } + + public void testJunit47ParallelIgnore() + throws Exception + { + + addGoal( "-Djunit.version=4.8.1" ); + addGoal( "-Dsurefire.parallel=classes" ); + executeTest(); + verifyErrorFreeLog(); + assertTestSuiteResults( 3, 0, 0, 3 ); + } + } Copied: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/pom.xml (from r1126721, maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/pom.xml) URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/pom.xml?p2=maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/pom.xml&p1=maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/pom.xml&r1=1126721&r2=1132734&rev=1132734&view=diff ============================================================================== --- maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/pom.xml (original) +++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/pom.xml Mon Jun 6 19:47:23 2011 @@ -24,15 +24,20 @@ <modelVersion>4.0.0</modelVersion> <groupId>org.apache.maven.plugins.surefire</groupId> - <artifactId>junit44-ignore</artifactId> + <artifactId>junit-ignore</artifactId> <version>1.0-SNAPSHOT</version> <name>Test of @Ignore annotation</name> + <properties> + <junit.version>4.4</junit.version> + <surefire.parallel></surefire.parallel> + </properties> + <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> - <version>4.4</version> + <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> @@ -50,9 +55,11 @@ <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>${surefire.version}</version> + <configuration> + <parallel>${surefire.parallel}</parallel> + <threadCount>3</threadCount> + </configuration> </plugin> - </plugins> </build> - </project> Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/pom.xml ------------------------------------------------------------------------------ svn:eol-style = native Copied: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/BasicTest.java (from r1126721, maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/java/junit44/ignore/BasicTest.java) URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/BasicTest.java?p2=maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/BasicTest.java&p1=maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/java/junit44/ignore/BasicTest.java&r1=1126721&r2=1132734&rev=1132734&view=diff ============================================================================== --- maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/java/junit44/ignore/BasicTest.java (original) +++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/BasicTest.java Mon Jun 6 19:47:23 2011 @@ -1,11 +1,10 @@ -package junit44.ignore; -import static org.hamcrest.core.Is.*; -import static org.hamcrest.core.IsNull.*; +package junit.ignore; import org.junit.Assert; -import org.junit.Test; import org.junit.Ignore; +import org.junit.Test; +@Ignore("ignore this test") public class BasicTest { Copied: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/ClassLevelIgnore1Test.java (from r1126721, maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/java/junit44/ignore/BasicTest.java) URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/ClassLevelIgnore1Test.java?p2=maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/ClassLevelIgnore1Test.java&p1=maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/java/junit44/ignore/BasicTest.java&r1=1126721&r2=1132734&rev=1132734&view=diff ============================================================================== --- maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/java/junit44/ignore/BasicTest.java (original) +++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/ClassLevelIgnore1Test.java Mon Jun 6 19:47:23 2011 @@ -1,15 +1,14 @@ -package junit44.ignore; -import static org.hamcrest.core.Is.*; -import static org.hamcrest.core.IsNull.*; +package junit.ignore; + import org.junit.Assert; -import org.junit.Test; import org.junit.Ignore; +import org.junit.Test; -public class BasicTest +@Ignore("ignore this test") +public class ClassLevelIgnore1Test { - @Ignore("ignore this test") @Test public void testIgnorable() { Copied: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/ClassLevelIgnore2Test.java (from r1126721, maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/java/junit44/ignore/BasicTest.java) URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/ClassLevelIgnore2Test.java?p2=maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/ClassLevelIgnore2Test.java&p1=maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/java/junit44/ignore/BasicTest.java&r1=1126721&r2=1132734&rev=1132734&view=diff ============================================================================== --- maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/java/junit44/ignore/BasicTest.java (original) +++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/ClassLevelIgnore2Test.java Mon Jun 6 19:47:23 2011 @@ -1,15 +1,14 @@ -package junit44.ignore; -import static org.hamcrest.core.Is.*; -import static org.hamcrest.core.IsNull.*; +package junit.ignore; + import org.junit.Assert; -import org.junit.Test; import org.junit.Ignore; +import org.junit.Test; -public class BasicTest +@Ignore("ignore this test") +public class ClassLevelIgnore2Test { - @Ignore("ignore this test") @Test public void testIgnorable() { Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/ClassLevelIgnore2Test.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.java URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.java?rev=1132734&r1=1132733&r2=1132734&view=diff ============================================================================== --- maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.java (original) +++ maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.java Mon Jun 6 19:47:23 2011 @@ -19,11 +19,10 @@ package org.apache.maven.surefire.junitc * under the License. */ -import org.apache.maven.surefire.common.junit4.JUnit4RunListener; -import org.apache.maven.surefire.report.RunListener; - import java.util.ArrayList; import java.util.Map; +import org.apache.maven.surefire.common.junit4.JUnit4RunListener; +import org.apache.maven.surefire.report.RunListener; import org.junit.runner.Description; import org.junit.runner.Result; @@ -70,7 +69,7 @@ public class JUnitCoreRunListener Class<?> itemTestClass = null; for ( Description item : children ) { - if ( item.isTest() ) + if ( item.isTest() && item.getMethodName() != null ) { testSet.incrementTestMethodCount(); if ( itemTestClass == null ) @@ -82,6 +81,10 @@ public class JUnitCoreRunListener { fillTestCountMap( item ); } + else + { + classMethodCounts.put( item.getClassName(), testSet ); + } } if ( itemTestClass != null ) {