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 2011/11/25 21:52:27 UTC
svn commit: r1206317 - in /maven/surefire/trunk:
surefire-api/src/test/java/org/apache/maven/surefire/util/
surefire-integration-tests/src/test/resources/junit48-method-pattern/
surefire-providers/common-junit48/ surefire-providers/common-junit48/src/m...
Author: krosenvold
Date: Fri Nov 25 20:52:24 2011
New Revision: 1206317
URL: http://svn.apache.org/viewvc?rev=1206317&view=rev
Log:
[SUREFIRE-760] Method level filtering for JUnitCore provider
Removed:
maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4TestSet.java
Modified:
maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/util/TestsToRunTest.java
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-method-pattern/pom.xml
maven/surefire/trunk/surefire-providers/common-junit48/pom.xml
maven/surefire/trunk/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/FilterFactory.java
maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
maven/surefire/trunk/surefire-providers/surefire-junit47/pom.xml
maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
Modified: maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/util/TestsToRunTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/util/TestsToRunTest.java?rev=1206317&r1=1206316&r2=1206317&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/util/TestsToRunTest.java (original)
+++ maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/util/TestsToRunTest.java Fri Nov 25 20:52:24 2011
@@ -19,10 +19,10 @@ package org.apache.maven.surefire.util;
* under the License.
*/
-import junit.framework.TestCase;
-
import java.util.Arrays;
+import junit.framework.TestCase;
+
/*
* @author Kristian Rosenvold
*/
Modified: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-method-pattern/pom.xml
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-method-pattern/pom.xml?rev=1206317&r1=1206316&r2=1206317&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-method-pattern/pom.xml (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-method-pattern/pom.xml Fri Nov 25 20:52:24 2011
@@ -59,6 +59,13 @@
<configuration>
<test>BasicTest#testSuccess*</test>
</configuration>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>surefire-junit47</artifactId>
+ <version>${surefire.version}</version>
+ </dependency>
+ </dependencies>
</plugin>
</plugins>
</build>
Modified: maven/surefire/trunk/surefire-providers/common-junit48/pom.xml
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/common-junit48/pom.xml?rev=1206317&r1=1206316&r2=1206317&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/common-junit48/pom.xml (original)
+++ maven/surefire/trunk/surefire-providers/common-junit48/pom.xml Fri Nov 25 20:52:24 2011
@@ -43,11 +43,42 @@
<artifactId>common-junit4</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ </dependency>
+
</dependencies>
<build>
<plugins>
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-shade-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>shade</goal>
+ </goals>
+ <configuration>
+ <minimizeJar>true</minimizeJar>
+ <artifactSet>
+ <includes>
+ <include>org.codehaus.plexus:plexus-utils</include>
+ </includes>
+ </artifactSet>
+ <relocations>
+ <relocation>
+ <pattern>org.codehaus.plexus.util</pattern>
+ <shadedPattern>org.apache.maven.surefire.commonjunit48.org.codehaus.plexus.util</shadedPattern>
+ </relocation>
+ </relocations>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
Modified: maven/surefire/trunk/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/FilterFactory.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/FilterFactory.java?rev=1206317&r1=1206316&r2=1206317&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/FilterFactory.java (original)
+++ maven/surefire/trunk/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/FilterFactory.java Fri Nov 25 20:52:24 2011
@@ -22,6 +22,7 @@ package org.apache.maven.surefire.common
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
+import org.codehaus.plexus.util.SelectorUtils;
import org.junit.experimental.categories.Categories;
import org.junit.runner.Description;
@@ -67,6 +68,49 @@ public class FilterFactory
return included;
}
+ public Filter createMethodFilter( String requestedTestMethod )
+ {
+ return new MethodFilter( requestedTestMethod );
+ }
+
+ private static class MethodFilter
+ extends Filter
+ {
+ private final String requestedTestMethod;
+
+ public MethodFilter( String requestedTestMethod )
+ {
+ this.requestedTestMethod = requestedTestMethod;
+ }
+
+ @Override
+ public boolean shouldRun( Description description )
+ {
+ for ( Description o : description.getChildren() )
+ {
+ if (isDescriptionMatch( o )){
+ return true;
+ }
+
+ }
+ return isDescriptionMatch( description );
+ }
+
+ private boolean isDescriptionMatch( Description description )
+ {
+ return description.getMethodName() != null && SelectorUtils.match( requestedTestMethod,
+ description.getMethodName() );
+ }
+
+
+ @Override
+ public String describe()
+ {
+ return "By method" + requestedTestMethod;
+ }
+ }
+
+
private static class CombinedCategoryFilter
extends Filter
{
Modified: maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java?rev=1206317&r1=1206316&r2=1206317&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java Fri Nov 25 20:52:24 2011
@@ -19,6 +19,7 @@ package org.apache.maven.surefire.junit4
* under the License.
*/
+import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.List;
import org.apache.maven.surefire.common.junit4.JUnit4RunListener;
@@ -41,7 +42,11 @@ import org.apache.maven.surefire.util.Di
import org.apache.maven.surefire.util.RunOrderCalculator;
import org.apache.maven.surefire.util.TestsToRun;
+import org.apache.maven.surefire.util.internal.StringUtils;
+import org.codehaus.plexus.util.SelectorUtils;
+import org.junit.runner.Request;
import org.junit.runner.Result;
+import org.junit.runner.Runner;
import org.junit.runner.notification.RunNotifier;
/**
@@ -125,7 +130,7 @@ public class JUnit4Provider
try
{
- JUnit4TestSet.execute( clazz, listeners, this.requestedTestMethod );
+ execute( clazz, listeners, this.requestedTestMethod );
}
catch ( TestSetFailedException e )
{
@@ -205,4 +210,27 @@ public class JUnit4Provider
final String property = System.getProperty( "surefire.junit4.upgradecheck" );
return property != null;
}
+
+
+ private static void execute( Class testClass, RunNotifier fNotifier, String testMethod )
+ throws TestSetFailedException
+ {
+ if ( !StringUtils.isBlank( testMethod ) )
+ {
+ Method[] methods = testClass.getMethods();
+ for (int i = 0,size = methods.length;i<size;i++)
+ {
+ if ( SelectorUtils.match( testMethod, methods[i].getName() ) )
+ {
+ Runner junitTestRunner = Request.method( testClass, methods[i].getName() ).getRunner();
+ junitTestRunner.run( fNotifier );
+ }
+ }
+ return;
+ }
+
+ Runner junitTestRunner = Request.aClass( testClass ).getRunner();
+
+ junitTestRunner.run( fNotifier );
+ }
}
Modified: maven/surefire/trunk/surefire-providers/surefire-junit47/pom.xml
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/pom.xml?rev=1206317&r1=1206316&r2=1206317&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit47/pom.xml (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit47/pom.xml Fri Nov 25 20:52:24 2011
@@ -39,10 +39,6 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-utils</artifactId>
- </dependency>
- <dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.7</version>
Modified: maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java?rev=1206317&r1=1206316&r2=1206317&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java Fri Nov 25 20:52:24 2011
@@ -43,6 +43,7 @@ import org.apache.maven.surefire.util.Di
import org.apache.maven.surefire.util.RunOrderCalculator;
import org.apache.maven.surefire.util.ScannerFilter;
import org.apache.maven.surefire.util.TestsToRun;
+import org.apache.maven.surefire.util.internal.StringUtils;
import org.junit.runner.Description;
import org.junit.runner.manipulation.Filter;
@@ -74,6 +75,8 @@ public class JUnitCoreProvider
private RunOrderCalculator runOrderCalculator;
+ private String requestedTestMethod;
+
public JUnitCoreProvider( ProviderParameters providerParameters )
{
this.providerParameters = providerParameters;
@@ -82,6 +85,8 @@ public class JUnitCoreProvider
this.runOrderCalculator = providerParameters.getRunOrderCalculator();
this.jUnitCoreParameters = new JUnitCoreParameters( providerParameters.getProviderProperties() );
this.scannerFilter = new JUnit4TestChecker( testClassLoader );
+ this.requestedTestMethod = providerParameters.getTestRequest().getRequestedTestMethod();
+
customRunListeners = JUnit4RunListenerFactory.
createCustomListeners( providerParameters.getProviderProperties().getProperty( "listener" ) );
jUnit48Reflector = new JUnit48Reflector( testClassLoader );
@@ -169,7 +174,10 @@ public class JUnitCoreProvider
private Filter createJUnit48Filter()
{
- return new FilterFactory( testClassLoader ).createGroupFilter( providerParameters.getProviderProperties() );
+ final FilterFactory filterFactory = new FilterFactory( testClassLoader );
+ return isMethodFilterSpecified() ?
+ filterFactory.createMethodFilter( requestedTestMethod ) :
+ filterFactory.createGroupFilter( providerParameters.getProviderProperties() );
}
private TestsToRun scanClassPath()
@@ -177,4 +185,9 @@ public class JUnitCoreProvider
final TestsToRun scanned = directoryScanner.locateTestClasses( testClassLoader, scannerFilter );
return runOrderCalculator.orderTestClasses( scanned );
}
+
+ private boolean isMethodFilterSpecified()
+ {
+ return !StringUtils.isBlank( requestedTestMethod );
+ }
}