You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ag...@apache.org on 2013/03/18 23:34:34 UTC
git commit: [SUREFIRE-971] allow combining test method pattern and
group pattern
Updated Branches:
refs/heads/master c513cbc5b -> 81e39803d
[SUREFIRE-971] allow combining test method pattern and group pattern
Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/81e39803
Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/81e39803
Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/81e39803
Branch: refs/heads/master
Commit: 81e39803d8f2724719b2eeb36cf0639de973f225
Parents: c513cbc
Author: Andreas Gudian <ag...@apache.org>
Authored: Mon Mar 18 23:31:43 2013 +0100
Committer: Andreas Gudian <ag...@apache.org>
Committed: Mon Mar 18 23:31:43 2013 +0100
----------------------------------------------------------------------
.../maven/surefire/its/TestMethodPatternIT.java | 6 +
.../src/test/java/junit4/BasicTest.java | 2 +
.../src/test/java/junit4/SampleCategory.java | 6 +
.../surefire/common/junit48/FilterFactory.java | 77 +++++++++++----
.../surefire/junitcore/JUnitCoreProvider.java | 26 +++---
5 files changed, 83 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/81e39803/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestMethodPatternIT.java
----------------------------------------------------------------------
diff --git a/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestMethodPatternIT.java b/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestMethodPatternIT.java
index aedb953..8438dd2 100644
--- a/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestMethodPatternIT.java
+++ b/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestMethodPatternIT.java
@@ -48,6 +48,12 @@ public class TestMethodPatternIT
}
@Test
+ public void testJUnit48WithCategoryFilter()
+ {
+ unpack( "junit48-method-pattern" ).addGoal( "-Dgroups=junit4.SampleCategory" ).executeTest().assertTestSuiteResults( 1, 0, 0, 0 );;
+ }
+
+ @Test
public void testTestNgMethodBefore()
{
runMethodPattern( "testng-method-pattern-before" );
http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/81e39803/surefire-integration-tests/src/test/resources/junit48-method-pattern/src/test/java/junit4/BasicTest.java
----------------------------------------------------------------------
diff --git a/surefire-integration-tests/src/test/resources/junit48-method-pattern/src/test/java/junit4/BasicTest.java b/surefire-integration-tests/src/test/resources/junit48-method-pattern/src/test/java/junit4/BasicTest.java
index f5d0b9f..6d883af 100644
--- a/surefire-integration-tests/src/test/resources/junit48-method-pattern/src/test/java/junit4/BasicTest.java
+++ b/surefire-integration-tests/src/test/resources/junit48-method-pattern/src/test/java/junit4/BasicTest.java
@@ -4,6 +4,7 @@ import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
public class BasicTest
@@ -43,6 +44,7 @@ public class BasicTest
}
@Test
+ @Category(SampleCategory.class)
public void testSuccessTwo()
{
Assert.assertTrue( true );
http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/81e39803/surefire-integration-tests/src/test/resources/junit48-method-pattern/src/test/java/junit4/SampleCategory.java
----------------------------------------------------------------------
diff --git a/surefire-integration-tests/src/test/resources/junit48-method-pattern/src/test/java/junit4/SampleCategory.java b/surefire-integration-tests/src/test/resources/junit48-method-pattern/src/test/java/junit4/SampleCategory.java
new file mode 100644
index 0000000..9a8c4fe
--- /dev/null
+++ b/surefire-integration-tests/src/test/resources/junit48-method-pattern/src/test/java/junit4/SampleCategory.java
@@ -0,0 +1,6 @@
+package junit4;
+
+public interface SampleCategory
+{
+
+}
http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/81e39803/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/FilterFactory.java
----------------------------------------------------------------------
diff --git a/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/FilterFactory.java b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/FilterFactory.java
index ed770f6..ff30e18 100644
--- a/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/FilterFactory.java
+++ b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/FilterFactory.java
@@ -65,8 +65,8 @@ public class FilterFactory
}
catch ( ParseException e )
{
- throw new IllegalArgumentException(
- "Invalid group expression: '" + groups + "'. Reason: " + e.getMessage(), e );
+ throw new IllegalArgumentException( "Invalid group expression: '" + groups + "'. Reason: "
+ + e.getMessage(), e );
}
}
@@ -79,13 +79,14 @@ public class FilterFactory
}
catch ( ParseException e )
{
- throw new IllegalArgumentException(
- "Invalid group expression: '" + excludedGroups + "'. Reason: " + e.getMessage(), e );
+ throw new IllegalArgumentException( "Invalid group expression: '" + excludedGroups + "'. Reason: "
+ + e.getMessage(), e );
}
}
// GroupMatcher included = commaSeparatedListToFilters( groups );
- // GroupMatcher excluded = commaSeparatedListToFilters( excludedGroups );
+ // GroupMatcher excluded = commaSeparatedListToFilters( excludedGroups
+ // );
if ( included != null && testClassLoader != null )
{
@@ -120,7 +121,8 @@ public class FilterFactory
// }
// catch ( ParseException e )
// {
- // throw new IllegalArgumentException( "Invalid group expression: '" + group + "'. Reason: "
+ // throw new IllegalArgumentException( "Invalid group expression: '" + group
+ // + "'. Reason: "
// + e.getMessage(), e );
// }
//
@@ -137,6 +139,11 @@ public class FilterFactory
return new MethodFilter( requestedTestMethod );
}
+ public Filter and( Filter filter1, Filter filter2 )
+ {
+ return new AndFilter( filter1, filter2 );
+ }
+
private static class MethodFilter
extends Filter
{
@@ -163,11 +170,10 @@ public class FilterFactory
private boolean isDescriptionMatch( Description description )
{
- return description.getMethodName() != null && SelectorUtils.match( requestedTestMethod,
- description.getMethodName() );
+ return description.getMethodName() != null
+ && SelectorUtils.match( requestedTestMethod, description.getMethodName() );
}
-
@Override
public String describe()
{
@@ -204,9 +210,9 @@ public class FilterFactory
@Override
public boolean shouldRun( Description description )
{
- return shouldRun( description, ( description.getMethodName() == null
- ? null
- : Description.createSuiteDescription( description.getTestClass() ) ) );
+ return shouldRun( description,
+ ( description.getMethodName() == null ? null
+ : Description.createSuiteDescription( description.getTestClass() ) ) );
}
private boolean shouldRun( Description description, Description parent )
@@ -230,7 +236,8 @@ public class FilterFactory
Category cat = description.getAnnotation( Category.class );
if ( cat != null )
{
- // System.out.println( "Adding categories: " + Arrays.toString( cat.value() ) );
+ // System.out.println( "Adding categories: " + Arrays.toString(
+ // cat.value() ) );
cats.addAll( Arrays.asList( cat.value() ) );
}
@@ -239,21 +246,26 @@ public class FilterFactory
cat = parent.getAnnotation( Category.class );
if ( cat != null )
{
- // System.out.println( "Adding class-level categories: " + Arrays.toString( cat.value() ) );
+ // System.out.println( "Adding class-level categories: " +
+ // Arrays.toString( cat.value() ) );
cats.addAll( Arrays.asList( cat.value() ) );
}
}
- // System.out.println( "Checking " + cats.size() + " categories..." );
+ // System.out.println( "Checking " + cats.size() + " categories..."
+ // );
//
- // System.out.println( "Enabled? " + ( matcher.enabled( cats.toArray( new Class<?>[] {} ) ) ) + "\n\n" );
- result = matcher.enabled( cats.toArray( new Class<?>[]{ } ) );
+ // System.out.println( "Enabled? " + ( matcher.enabled(
+ // cats.toArray( new Class<?>[] {} ) ) ) + "\n\n" );
+ result = matcher.enabled( cats.toArray( new Class<?>[] {} ) );
if ( parent == null )
{
if ( cats.size() == 0 )
{
- // System.out.println( "Allow method-level filtering by PASSing class-level shouldRun() test..." );
+ // System.out.println(
+ // "Allow method-level filtering by PASSing class-level shouldRun() test..."
+ // );
result = true;
}
else if ( !result )
@@ -285,6 +297,31 @@ public class FilterFactory
}
+ private static class AndFilter
+ extends Filter
+ {
+ private final Filter filter1;
+
+ private final Filter filter2;
+
+ public AndFilter( Filter filter1, Filter filter2 )
+ {
+ this.filter1 = filter1;
+ this.filter2 = filter2;
+ }
+
+ @Override
+ public boolean shouldRun( Description description )
+ {
+ return filter1.shouldRun( description ) && filter2.shouldRun( description );
+ }
+
+ @Override
+ public String describe()
+ {
+ return filter1.describe() + " AND " + filter2.describe();
+ }
+ }
@SuppressWarnings( "unused" )
private static class CombinedCategoryFilter
@@ -303,8 +340,8 @@ public class FilterFactory
@Override
public boolean shouldRun( Description description )
{
- return ( includedFilters.isEmpty() || inOneOfFilters( includedFilters, description ) ) && (
- excludedFilters.isEmpty() || !inOneOfFilters( excludedFilters, description ) );
+ return ( includedFilters.isEmpty() || inOneOfFilters( includedFilters, description ) )
+ && ( excludedFilters.isEmpty() || !inOneOfFilters( excludedFilters, description ) );
}
private boolean inOneOfFilters( List<Filter> filters, Description description )
http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/81e39803/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
index 55d0edf..075216d 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
@@ -62,7 +62,6 @@ public class JUnitCoreProvider
private final ProviderParameters providerParameters;
-
private TestsToRun testsToRun;
private JUnit48Reflector jUnit48Reflector;
@@ -83,8 +82,8 @@ public class JUnitCoreProvider
this.scannerFilter = new JUnit4TestChecker( testClassLoader );
this.requestedTestMethod = providerParameters.getTestRequest().getRequestedTestMethod();
- customRunListeners = JUnit4RunListenerFactory.
- createCustomListeners( providerParameters.getProviderProperties().getProperty( "listener" ) );
+ customRunListeners =
+ JUnit4RunListenerFactory.createCustomListeners( providerParameters.getProviderProperties().getProperty( "listener" ) );
jUnit48Reflector = new JUnit48Reflector( testClassLoader );
}
@@ -95,18 +94,16 @@ public class JUnitCoreProvider
public Iterator getSuites()
{
- final Filter filter = jUnit48Reflector.isJUnit48Available() ? createJUnit48Filter() : null;
testsToRun = scanClassPath();
return testsToRun.iterator();
}
private boolean isSingleThreaded()
{
- return !jUnitCoreParameters.isAnyParallelitySelected() || ( testsToRun.containsExactly( 1 )
- && !jUnitCoreParameters.isParallelMethod() );
+ return !jUnitCoreParameters.isAnyParallelitySelected()
+ || ( testsToRun.containsExactly( 1 ) && !jUnitCoreParameters.isParallelMethod() );
}
-
public RunResult invoke( Object forkTestSet )
throws TestSetFailedException, ReporterException
{
@@ -157,10 +154,10 @@ public class JUnitCoreProvider
{
final Map<String, TestSet> testSetMap = new ConcurrentHashMap<String, TestSet>();
- RunListener listener = ConcurrentRunListener.createInstance( testSetMap, reporterFactory,
- jUnitCoreParameters.isParallelClasses(),
- jUnitCoreParameters.isParallelBoth(),
- consoleLogger );
+ RunListener listener =
+ ConcurrentRunListener.createInstance( testSetMap, reporterFactory,
+ jUnitCoreParameters.isParallelClasses(),
+ jUnitCoreParameters.isParallelBoth(), consoleLogger );
ConsoleOutputCapture.startCapture( (ConsoleOutputReceiver) listener );
jUnit4RunListener = new JUnitCoreRunListener( listener, testSetMap );
@@ -171,9 +168,10 @@ public class JUnitCoreProvider
private Filter createJUnit48Filter()
{
final FilterFactory filterFactory = new FilterFactory( testClassLoader );
- return isMethodFilterSpecified()
- ? filterFactory.createMethodFilter( requestedTestMethod )
- : filterFactory.createGroupFilter( providerParameters.getProviderProperties() );
+ Filter groupFilter = filterFactory.createGroupFilter( providerParameters.getProviderProperties() );
+ return isMethodFilterSpecified() ? filterFactory.and( groupFilter,
+ filterFactory.createMethodFilter( requestedTestMethod ) )
+ : groupFilter;
}
private TestsToRun scanClassPath()