You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2012/01/24 20:05:19 UTC
svn commit: r1235415 - in /maven/surefire/trunk:
maven-surefire-common/src/main/java/org/apache/maven/surefire/group/match/
maven-surefire-common/src/main/javacc/
maven-surefire-common/src/test/java/org/apache/maven/surefire/group/
maven-surefire-commo...
Author: jdcasey
Date: Tue Jan 24 19:05:19 2012
New Revision: 1235415
URL: http://svn.apache.org/viewvc?rev=1235415&view=rev
Log:
[SUREFIRE-809] Wire up support for boolean group expressions to testng
Added:
maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/
maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/
maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/AndGroupMatcherTest.java (with props)
maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/InverseGroupMatcherTest.java (with props)
maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/OrGroupMatcherTest.java (with props)
maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/SingleGroupMatcherTest.java (with props)
maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/parse/
maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/parse/GroupMatcherParserTest.java (with props)
maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/group/
maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/group/GroupMatcherMethodSelector.java (with props)
Removed:
maven/surefire/trunk/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/fixture/cat/First.java
maven/surefire/trunk/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/fixture/cat/Second.java
maven/surefire/trunk/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/fixture/cat/Third.java
maven/surefire/trunk/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/fixture/test/FirstTest.java
maven/surefire/trunk/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/fixture/test/SecondTest.java
maven/surefire/trunk/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/fixture/test/ThirdTest.java
Modified:
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/surefire/group/match/SingleGroupMatcher.java
maven/surefire/trunk/maven-surefire-common/src/main/javacc/category-expression.jj
maven/surefire/trunk/surefire-providers/surefire-testng/pom.xml
maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/AbstractDirectConfigurator.java
Modified: maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/surefire/group/match/SingleGroupMatcher.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/surefire/group/match/SingleGroupMatcher.java?rev=1235415&r1=1235414&r2=1235415&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/surefire/group/match/SingleGroupMatcher.java (original)
+++ maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/surefire/group/match/SingleGroupMatcher.java Tue Jan 24 19:05:19 2012
@@ -9,6 +9,11 @@ public class SingleGroupMatcher
private Class<?> enabledClass;
+ public SingleGroupMatcher( String enabled )
+ {
+ this.enabled = enabled.endsWith( ".class" ) ? enabled.substring( 0, enabled.length() - 6 ) : enabled;
+ }
+
@Override
public int hashCode()
{
@@ -44,11 +49,6 @@ public class SingleGroupMatcher
return "*" + enabled;
}
- public SingleGroupMatcher( String disabled )
- {
- this.enabled = disabled;
- }
-
public boolean enabled( Class<?>... cats )
{
if ( cats != null )
Modified: maven/surefire/trunk/maven-surefire-common/src/main/javacc/category-expression.jj
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-common/src/main/javacc/category-expression.jj?rev=1235415&r1=1235414&r2=1235415&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-common/src/main/javacc/category-expression.jj (original)
+++ maven/surefire/trunk/maven-surefire-common/src/main/javacc/category-expression.jj Tue Jan 24 19:05:19 2012
@@ -134,10 +134,11 @@ GroupMatcher rhs=null;
Op op=null;
}
{
- (not())?
+ (not()
{
inverted=true;
}
+ )?
<LPAREN>
lhs=expr()
(
@@ -170,7 +171,6 @@ Token val=null;
GroupMatcher m = new SingleGroupMatcher( val.image );
return inverted ? new InverseGroupMatcher( m ) : m;
}
- (<CLS>)?
}
Op op() :
Added: maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/AndGroupMatcherTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/AndGroupMatcherTest.java?rev=1235415&view=auto
==============================================================================
--- maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/AndGroupMatcherTest.java (added)
+++ maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/AndGroupMatcherTest.java Tue Jan 24 19:05:19 2012
@@ -0,0 +1,36 @@
+package org.apache.maven.surefire.group.match;
+
+import junit.framework.TestCase;
+
+public class AndGroupMatcherTest
+ extends TestCase
+{
+
+ public void testDontMatchOneInGroup()
+ {
+ AndGroupMatcher matcher =
+ new AndGroupMatcher( new SingleGroupMatcher( SingleGroupMatcher.class.getName() ),
+ new SingleGroupMatcher( InverseGroupMatcher.class.getName() ) );
+
+ assertFalse( matcher.enabled( InverseGroupMatcher.class, AndGroupMatcher.class ) );
+ }
+
+ public void testMatchBothInGroup()
+ {
+ AndGroupMatcher matcher =
+ new AndGroupMatcher( new SingleGroupMatcher( SingleGroupMatcher.class.getName() ),
+ new SingleGroupMatcher( InverseGroupMatcher.class.getName() ) );
+
+ assertTrue( matcher.enabled( InverseGroupMatcher.class, SingleGroupMatcher.class ) );
+ }
+
+ public void testDontMatchAnyInGroup()
+ {
+ AndGroupMatcher matcher =
+ new AndGroupMatcher( new SingleGroupMatcher( SingleGroupMatcher.class.getName() ),
+ new SingleGroupMatcher( InverseGroupMatcher.class.getName() ) );
+
+ assertFalse( matcher.enabled( OrGroupMatcher.class, AndGroupMatcher.class ) );
+ }
+
+}
Propchange: maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/AndGroupMatcherTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/InverseGroupMatcherTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/InverseGroupMatcherTest.java?rev=1235415&view=auto
==============================================================================
--- maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/InverseGroupMatcherTest.java (added)
+++ maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/InverseGroupMatcherTest.java Tue Jan 24 19:05:19 2012
@@ -0,0 +1,16 @@
+package org.apache.maven.surefire.group.match;
+
+import junit.framework.TestCase;
+
+public class InverseGroupMatcherTest
+ extends TestCase
+{
+
+ public void testInvertSingleMatcher()
+ {
+ InverseGroupMatcher matcher =
+ new InverseGroupMatcher( new SingleGroupMatcher( InverseGroupMatcher.class.getName() ) );
+ assertFalse( matcher.enabled( InverseGroupMatcher.class ) );
+ }
+
+}
Propchange: maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/InverseGroupMatcherTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/OrGroupMatcherTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/OrGroupMatcherTest.java?rev=1235415&view=auto
==============================================================================
--- maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/OrGroupMatcherTest.java (added)
+++ maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/OrGroupMatcherTest.java Tue Jan 24 19:05:19 2012
@@ -0,0 +1,36 @@
+package org.apache.maven.surefire.group.match;
+
+import junit.framework.TestCase;
+
+public class OrGroupMatcherTest
+ extends TestCase
+{
+
+ public void testMatchOneInOredGroup()
+ {
+ OrGroupMatcher matcher =
+ new OrGroupMatcher( new SingleGroupMatcher( SingleGroupMatcher.class.getName() ),
+ new SingleGroupMatcher( InverseGroupMatcher.class.getName() ) );
+
+ assertTrue( matcher.enabled( InverseGroupMatcher.class, AndGroupMatcher.class ) );
+ }
+
+ public void testMatchBothInOredGroup()
+ {
+ OrGroupMatcher matcher =
+ new OrGroupMatcher( new SingleGroupMatcher( SingleGroupMatcher.class.getName() ),
+ new SingleGroupMatcher( InverseGroupMatcher.class.getName() ) );
+
+ assertTrue( matcher.enabled( InverseGroupMatcher.class, SingleGroupMatcher.class ) );
+ }
+
+ public void testMatchNoneInOredGroup()
+ {
+ OrGroupMatcher matcher =
+ new OrGroupMatcher( new SingleGroupMatcher( SingleGroupMatcher.class.getName() ),
+ new SingleGroupMatcher( InverseGroupMatcher.class.getName() ) );
+
+ assertFalse( matcher.enabled( OrGroupMatcher.class, AndGroupMatcher.class ) );
+ }
+
+}
Propchange: maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/OrGroupMatcherTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/SingleGroupMatcherTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/SingleGroupMatcherTest.java?rev=1235415&view=auto
==============================================================================
--- maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/SingleGroupMatcherTest.java (added)
+++ maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/SingleGroupMatcherTest.java Tue Jan 24 19:05:19 2012
@@ -0,0 +1,28 @@
+package org.apache.maven.surefire.group.match;
+
+import junit.framework.TestCase;
+
+public class SingleGroupMatcherTest
+ extends TestCase
+{
+
+ public void testMatchExactClassName()
+ {
+ SingleGroupMatcher matcher = new SingleGroupMatcher( SingleGroupMatcher.class.getName() );
+ assertTrue( matcher.enabled( SingleGroupMatcher.class ) );
+ }
+
+ public void testMatchLoadedClass()
+ {
+ SingleGroupMatcher matcher = new SingleGroupMatcher( SingleGroupMatcher.class.getName() );
+ matcher.loadGroupClasses( Thread.currentThread().getContextClassLoader() );
+ assertTrue( matcher.enabled( SingleGroupMatcher.class ) );
+ }
+
+ public void testMatchClassNameWithoutPackage()
+ {
+ SingleGroupMatcher matcher = new SingleGroupMatcher( SingleGroupMatcher.class.getSimpleName() );
+ assertTrue( matcher.enabled( SingleGroupMatcher.class ) );
+ }
+
+}
Propchange: maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/match/SingleGroupMatcherTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/parse/GroupMatcherParserTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/parse/GroupMatcherParserTest.java?rev=1235415&view=auto
==============================================================================
--- maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/parse/GroupMatcherParserTest.java (added)
+++ maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/parse/GroupMatcherParserTest.java Tue Jan 24 19:05:19 2012
@@ -0,0 +1,118 @@
+package org.apache.maven.surefire.group.parse;
+
+import junit.framework.TestCase;
+
+import org.apache.maven.surefire.group.match.AndGroupMatcher;
+import org.apache.maven.surefire.group.match.GroupMatcher;
+import org.apache.maven.surefire.group.match.InverseGroupMatcher;
+import org.apache.maven.surefire.group.match.OrGroupMatcher;
+import org.apache.maven.surefire.group.match.SingleGroupMatcher;
+
+public class GroupMatcherParserTest
+ extends TestCase
+{
+
+ public void testParseSingleClass()
+ throws ParseException
+ {
+ GroupMatcher matcher = new GroupMatcherParser( GroupMatcherParser.class.getName() ).parse();
+ assertTrue( "Wrong matcher type: " + matcher.getClass().getName(), matcher instanceof SingleGroupMatcher );
+ assertTrue( matcher.enabled( GroupMatcherParser.class ) );
+ }
+
+ public void testParseInvertedSingleClass()
+ throws ParseException
+ {
+ GroupMatcher matcher = new GroupMatcherParser( "NOT " + GroupMatcherParser.class.getName() ).parse();
+ assertTrue( "Wrong matcher type: " + matcher.getClass().getName(), matcher instanceof InverseGroupMatcher );
+ assertFalse( matcher.enabled( GroupMatcherParser.class ) );
+ }
+
+ public void testParseBareANDedPair()
+ throws ParseException
+ {
+ GroupMatcher matcher =
+ new GroupMatcherParser( GroupMatcherParser.class.getName() + " AND " + SingleGroupMatcher.class.getName() ).parse();
+
+ assertTrue( "Wrong matcher type: " + matcher.getClass().getName(), matcher instanceof AndGroupMatcher );
+ assertFalse( matcher.enabled( GroupMatcherParser.class ) );
+ assertTrue( matcher.enabled( GroupMatcherParser.class, SingleGroupMatcher.class ) );
+ }
+
+ public void testParseBareORedPair()
+ throws ParseException
+ {
+ GroupMatcher matcher =
+ new GroupMatcherParser( GroupMatcherParser.class.getName() + " OR " + SingleGroupMatcher.class.getName() ).parse();
+
+ assertTrue( "Wrong matcher type: " + matcher.getClass().getName(), matcher instanceof OrGroupMatcher );
+ assertTrue( matcher.enabled( GroupMatcherParser.class ) );
+ assertTrue( matcher.enabled( GroupMatcherParser.class, SingleGroupMatcher.class ) );
+ }
+
+ public void testParseGroupedANDedPair()
+ throws ParseException
+ {
+ GroupMatcher matcher =
+ new GroupMatcherParser( "(" + GroupMatcherParser.class.getName() + " AND "
+ + SingleGroupMatcher.class.getName() + ")" ).parse();
+
+ assertTrue( "Wrong matcher type: " + matcher.getClass().getName(), matcher instanceof AndGroupMatcher );
+ assertFalse( matcher.enabled( GroupMatcherParser.class ) );
+ assertTrue( matcher.enabled( GroupMatcherParser.class, SingleGroupMatcher.class ) );
+ }
+
+ public void testParseGroupedORedPair()
+ throws ParseException
+ {
+ GroupMatcher matcher =
+ new GroupMatcherParser( "(" + GroupMatcherParser.class.getName() + " OR "
+ + SingleGroupMatcher.class.getName() + ")" ).parse();
+
+ assertTrue( "Wrong matcher type: " + matcher.getClass().getName(), matcher instanceof OrGroupMatcher );
+ assertTrue( matcher.enabled( GroupMatcherParser.class ) );
+ assertTrue( matcher.enabled( GroupMatcherParser.class, SingleGroupMatcher.class ) );
+ }
+
+ public void testParseInvertedGroupedANDedPair()
+ throws ParseException
+ {
+ GroupMatcher matcher =
+ new GroupMatcherParser( "NOT (" + GroupMatcherParser.class.getName() + " AND "
+ + SingleGroupMatcher.class.getName() + ")" ).parse();
+
+ assertTrue( "Wrong matcher type: " + matcher.getClass().getName(), matcher instanceof InverseGroupMatcher );
+ assertTrue( matcher.enabled( GroupMatcherParser.class ) );
+ assertFalse( matcher.enabled( GroupMatcherParser.class, SingleGroupMatcher.class ) );
+ }
+
+ public void testParseInvertedGroupedORedPair()
+ throws ParseException
+ {
+ GroupMatcher matcher =
+ new GroupMatcherParser( "NOT (" + GroupMatcherParser.class.getName() + " OR "
+ + SingleGroupMatcher.class.getName() + ")" ).parse();
+
+ assertTrue( "Wrong matcher type: " + matcher.getClass().getName(), matcher instanceof InverseGroupMatcher );
+ assertFalse( matcher.enabled( GroupMatcherParser.class ) );
+ assertFalse( matcher.enabled( GroupMatcherParser.class, SingleGroupMatcher.class ) );
+ }
+
+ public void testSingleMatchWhenDotClassAppended()
+ throws ParseException
+ {
+ GroupMatcher matcher = new GroupMatcherParser( SingleGroupMatcher.class.getName() + ".class" ).parse();
+ assertTrue( "Wrong matcher type: " + matcher.getClass().getName(), matcher instanceof SingleGroupMatcher );
+ assertTrue( matcher.enabled( SingleGroupMatcher.class ) );
+ }
+
+ public void testSingleMatchWithOnlyClassSimpleName()
+ throws ParseException
+ {
+ GroupMatcher matcher = new GroupMatcherParser( SingleGroupMatcher.class.getSimpleName() ).parse();
+ System.out.println( matcher );
+ assertTrue( "Wrong matcher type: " + matcher.getClass().getName(), matcher instanceof SingleGroupMatcher );
+ assertTrue( matcher.enabled( SingleGroupMatcher.class ) );
+ }
+
+}
Propchange: maven/surefire/trunk/maven-surefire-common/src/test/java/org/apache/maven/surefire/group/parse/GroupMatcherParserTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: maven/surefire/trunk/surefire-providers/surefire-testng/pom.xml
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-testng/pom.xml?rev=1235415&r1=1235414&r2=1235415&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-testng/pom.xml (original)
+++ maven/surefire/trunk/surefire-providers/surefire-testng/pom.xml Tue Jan 24 19:05:19 2012
@@ -48,6 +48,10 @@
<version>3.8.2</version>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>maven-surefire-common</artifactId>
+ </dependency>
</dependencies>
<build>
Modified: maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/AbstractDirectConfigurator.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/AbstractDirectConfigurator.java?rev=1235415&r1=1235414&r2=1235415&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/AbstractDirectConfigurator.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/AbstractDirectConfigurator.java Tue Jan 24 19:05:19 2012
@@ -27,6 +27,11 @@ import java.util.List;
import java.util.Map;
import org.apache.maven.surefire.booter.ProviderParameterNames;
+import org.apache.maven.surefire.group.match.AndGroupMatcher;
+import org.apache.maven.surefire.group.match.GroupMatcher;
+import org.apache.maven.surefire.group.parse.GroupMatcherParser;
+import org.apache.maven.surefire.group.parse.ParseException;
+import org.apache.maven.surefire.testng.group.GroupMatcherMethodSelector;
import org.apache.maven.surefire.testset.TestSetFailedException;
import org.apache.maven.surefire.util.NestedRuntimeException;
import org.testng.TestNG;
@@ -39,8 +44,9 @@ public abstract class AbstractDirectConf
AbstractDirectConfigurator()
{
Map options = new HashMap();
- options.put( ProviderParameterNames.TESTNG_GROUPS_PROP, new Setter( "setGroups", String.class ) );
- options.put( ProviderParameterNames.TESTNG_EXCLUDEDGROUPS_PROP, new Setter( "setExcludedGroups", String.class ) );
+ // options.put( ProviderParameterNames.TESTNG_GROUPS_PROP, new Setter( "setGroups", String.class ) );
+ // options.put( ProviderParameterNames.TESTNG_EXCLUDEDGROUPS_PROP, new Setter( "setExcludedGroups", String.class
+ // ) );
options.put( "junit", new Setter( "setJUnit", Boolean.class ) );
options.put( ProviderParameterNames.THREADCOUNT_PROP, new Setter( "setThreadCount", int.class ) );
options.put( "usedefaultlisteners", new Setter( "setUseDefaultListeners", boolean.class ) );
@@ -77,6 +83,52 @@ public abstract class AbstractDirectConf
}
// TODO: we should have the Profile so that we can decide if this is needed or not
testng.setListenerClasses( loadListenerClasses( listeners ) );
+
+ loadGroupMatcher( testng, options );
+ }
+
+ private void loadGroupMatcher( TestNG testng, Map options )
+ throws TestSetFailedException
+ {
+ String includes = (String) options.get( ProviderParameterNames.TESTNG_GROUPS_PROP );
+ String excludes = (String) options.get( ProviderParameterNames.TESTNG_EXCLUDEDGROUPS_PROP );
+
+ try
+ {
+ GroupMatcher in = includes == null ? null : new GroupMatcherParser( includes ).parse();
+ GroupMatcher ex = excludes == null ? null : new GroupMatcherParser( excludes ).parse();
+
+ GroupMatcher matcher = null;
+ if ( in != null )
+ {
+ if ( ex != null )
+ {
+ matcher = new AndGroupMatcher( new GroupMatcher[] { in, ex } );
+ }
+ else
+ {
+ matcher = in;
+ }
+ }
+ else if ( ex != null )
+ {
+ matcher = ex;
+ }
+
+ if ( matcher != null )
+ {
+ // HORRIBLE hack, but TNG doesn't allow us to setup a method selector instance directly.
+ // Need some good way of setting the group-matching object / expression, and the test execution
+ // should always be in-process from this point on...
+ GroupMatcherMethodSelector.setGroupMatcher( matcher );
+ testng.addMethodSelector( GroupMatcherMethodSelector.class.getName(), 0 );
+ }
+ }
+ catch ( ParseException e )
+ {
+ throw new TestSetFailedException( "Cannot parse group includes/excludes expression(s):\nIncludes: "
+ + includes + "\nExcludes: " + excludes, e );
+ }
}
public static List loadListenerClasses( String listenerClasses )
Added: maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/group/GroupMatcherMethodSelector.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/group/GroupMatcherMethodSelector.java?rev=1235415&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/group/GroupMatcherMethodSelector.java (added)
+++ maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/group/GroupMatcherMethodSelector.java Tue Jan 24 19:05:19 2012
@@ -0,0 +1,52 @@
+package org.apache.maven.surefire.testng.group;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.maven.surefire.group.match.GroupMatcher;
+import org.testng.IMethodSelector;
+import org.testng.IMethodSelectorContext;
+import org.testng.ITestNGMethod;
+
+public class GroupMatcherMethodSelector
+ implements IMethodSelector
+{
+
+ private static final long serialVersionUID = 1L;
+
+ private static GroupMatcher matcher;
+
+ private Map answers = new HashMap();
+
+ public boolean includeMethod( IMethodSelectorContext context, ITestNGMethod method, boolean isTestMethod )
+ {
+ Boolean result = (Boolean) answers.get( method );
+ if ( result != null )
+ {
+ return result.booleanValue();
+ }
+
+ if ( matcher == null )
+ {
+ return true;
+ }
+
+ String[] groups = method.getGroups();
+ result = Boolean.valueOf( matcher.enabled( groups ) );
+
+ answers.put( method, result );
+
+ return result.booleanValue();
+ }
+
+ public void setTestMethods( List testMethods )
+ {
+ }
+
+ public static void setGroupMatcher( GroupMatcher matcher )
+ {
+ GroupMatcherMethodSelector.matcher = matcher;
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/group/GroupMatcherMethodSelector.java
------------------------------------------------------------------------------
svn:eol-style = native