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