http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/866a535b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/pom.xml ---------------------------------------------------------------------- diff --git a/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/pom.xml b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/pom.xml new file mode 100644 index 0000000..f1a554b --- /dev/null +++ b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/pom.xml @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF licenses this file + ~ to you under the Apache License, Version 2.0 (the + ~ "License"); you may not use this file except in compliance + ~ with the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, + ~ software distributed under the License is distributed on an + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + ~ KIND, either express or implied. See the License for the + ~ specific language governing permissions and limitations + ~ under the License. + --> + +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.maven.surefire</groupId> + <artifactId>it-parent</artifactId> + <version>1.0</version> + <relativePath>../pom.xml</relativePath> + </parent> + <groupId>org.apache.maven.plugins.surefire</groupId> + <artifactId>jiras-surefire-745-testng</artifactId> + <version>1.0</version> + + <properties> + <included/> + <excluded/> + </properties> + + <dependencies> + <dependency> + <groupId>org.testng</groupId> + <artifactId>testng</artifactId> + <version>5.7</version> + <classifier>jdk15</classifier> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.5</source> + <target>1.5</target> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + </plugin> + </plugins> + </build> + + <profiles> + <profile> + <id>testng-test</id> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>testng-includes</id> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <includes> + <include>${included}</include> + </includes> + </configuration> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>testng-includes-excludes</id> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <includes> + <include>${included}</include> + </includes> + <excludes> + <exclude>${excluded}</exclude> + </excludes> + </configuration> + </plugin> + </plugins> + </build> + </profile> + </profiles> + +</project>
http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/866a535b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/BasicTest.java ---------------------------------------------------------------------- diff --git a/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/BasicTest.java b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/BasicTest.java new file mode 100644 index 0000000..3e2728e --- /dev/null +++ b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/BasicTest.java @@ -0,0 +1,47 @@ +package jiras.surefire745; + + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.testng.annotations.*; +import static org.testng.Assert.*; + +public class BasicTest +{ + + @Test + public void testSuccessOne() + { + System.out.println( getClass() + "#testSuccessOne" ); + } + + @Test + public void testSuccessTwo() + { + System.out.println( getClass() + "#testSuccessTwo" ); + } + + @Test + public void testFailure() + { + System.out.println( getClass() + "#testFailure" ); + fail( ); + } +} http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/866a535b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/TestFive.java ---------------------------------------------------------------------- diff --git a/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/TestFive.java b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/TestFive.java new file mode 100644 index 0000000..d11ef5d --- /dev/null +++ b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/TestFive.java @@ -0,0 +1,44 @@ +package jiras.surefire745; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.testng.annotations.*; + +public class TestFive +{ + + @Test + public void testSuccessOne() + { + System.out.println( getClass() + "#testSuccessOne" ); + } + + @Test + public void testSuccessTwo() + { + System.out.println( getClass() + "#testSuccessTwo" ); + } + + @Test + public void testSuccessThree() + { + System.out.println( getClass() + "#testSuccessThree" ); + } +} http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/866a535b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/TestFour.java ---------------------------------------------------------------------- diff --git a/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/TestFour.java b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/TestFour.java new file mode 100644 index 0000000..0b1b6c6 --- /dev/null +++ b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/TestFour.java @@ -0,0 +1,44 @@ +package jiras.surefire745; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.testng.annotations.*; + +public class TestFour +{ + + @Test + public void testSuccessOne() + { + System.out.println( getClass() + "#testSuccessOne" ); + } + + @Test + public void testSuccessTwo() + { + System.out.println( getClass() + "#testSuccessTwo" ); + } + + @Test + public void testSuccessThree() + { + System.out.println( getClass() + "#testSuccessThree" ); + } +} http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/866a535b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/TestThree.java ---------------------------------------------------------------------- diff --git a/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/TestThree.java b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/TestThree.java new file mode 100644 index 0000000..0d290dc --- /dev/null +++ b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/TestThree.java @@ -0,0 +1,46 @@ +package jiras.surefire745; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.testng.annotations.*; +import static org.testng.Assert.*; + +public class TestThree +{ + + @Test + public void testSuccessOne() + { + System.out.println( getClass() + "#testSuccessOne" ); + } + + @Test + public void testSuccessTwo() + { + System.out.println( getClass() + "#testSuccessTwo" ); + } + + @Test + public void testFailOne() + { + System.out.println( getClass() + "#testFailOne" ); + fail(); + } +} http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/866a535b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/TestTwo.java ---------------------------------------------------------------------- diff --git a/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/TestTwo.java b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/TestTwo.java new file mode 100644 index 0000000..4e1b56d --- /dev/null +++ b/surefire-integration-tests/src/test/resources/testng-multiple-method-patterns/src/test/java/jiras/surefire745/TestTwo.java @@ -0,0 +1,38 @@ +package jiras.surefire745; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.testng.annotations.*; + +public class TestTwo +{ + + @Test + public void testSuccessOne() + { + System.out.println( getClass() + "#testSuccessOne" ); + } + + @Test + public void testSuccessTwo() + { + System.out.println( getClass() + "#testSuccessTwo" ); + } +} http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/866a535b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/MethodFilter.java ---------------------------------------------------------------------- diff --git a/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/MethodFilter.java b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/MethodFilter.java index 61d08ce..1af5679 100644 --- a/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/MethodFilter.java +++ b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/MethodFilter.java @@ -41,11 +41,11 @@ final class MethodFilter { Collection<Filter> includedFilters = new LinkedHashSet<Filter>(); Collection<Filter> excludedFilters = new LinkedHashSet<Filter>(); - for ( ResolvedTest test : testResolver.getIncludedFilters() ) + for ( ResolvedTest test : testResolver.getIncludedPatterns() ) { includedFilters.add( new RequestedTest( test ) ); } - for ( ResolvedTest test : testResolver.getExcludedFilters() ) + for ( ResolvedTest test : testResolver.getExcludedPatterns() ) { excludedFilters.add( new RequestedTest( test ) ); } @@ -63,11 +63,6 @@ final class MethodFilter { return combinedFilter.shouldRun( description ); } - else if ( combinedFilter.shouldRun( description ) ) - { - //pribudlo - daj do JUnit4Provider - return true; - } else { for ( Description o : description.getChildren() ) http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/866a535b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/RequestedTest.java ---------------------------------------------------------------------- diff --git a/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/RequestedTest.java b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/RequestedTest.java index 3862ff0..567db26 100644 --- a/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/RequestedTest.java +++ b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/RequestedTest.java @@ -26,6 +26,8 @@ import org.junit.runner.manipulation.Filter; final class RequestedTest extends Filter { + private static final String CLASS_FILE_EXTENSION = ".class"; + private final ResolvedTest test; RequestedTest( ResolvedTest test ) @@ -38,7 +40,7 @@ final class RequestedTest { Class<?> realTestClass = description.getTestClass(); String methodName = description.getMethodName(); - return realTestClass == null && methodName == null || test.shouldRun( realTestClass, methodName ); + return realTestClass == null && methodName == null || test.shouldRun( classFile( realTestClass ), methodName ); } @Override @@ -65,4 +67,9 @@ final class RequestedTest { return test.hashCode(); } + + private String classFile( Class<?> realTestClass ) + { + return realTestClass.getName().replace( '.', '/' ) + CLASS_FILE_EXTENSION; + } } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/866a535b/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/FilterFactoryTest.java ---------------------------------------------------------------------- diff --git a/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/FilterFactoryTest.java b/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/FilterFactoryTest.java index 91a00e3..07280af 100644 --- a/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/FilterFactoryTest.java +++ b/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/FilterFactoryTest.java @@ -19,31 +19,27 @@ package org.apache.maven.surefire.common.junit48; * under the License. */ -import junit.framework.TestCase; +import org.apache.maven.shared.utils.io.MatchPatterns; +import org.apache.maven.surefire.common.junit48.tests.pt.PT; +import org.apache.maven.surefire.testset.ResolvedTest; +import org.apache.maven.surefire.testset.TestListResolver; import org.junit.Test; -import org.junit.internal.builders.AllDefaultPossibilitiesBuilder; -import org.junit.runner.Computer; import org.junit.runner.Description; import org.junit.runner.JUnitCore; import org.junit.runner.Request; import org.junit.runner.Result; import org.junit.runner.RunWith; -import org.junit.runner.Runner; import org.junit.runner.manipulation.Filter; -import org.junit.runner.manipulation.NoTestsRemainException; -import org.junit.runners.Suite; -import org.junit.runners.model.InitializationError; -import org.junit.runners.model.RunnerBuilder; -import java.util.ArrayList; +import java.io.File; import java.util.Arrays; import java.util.Collection; -import java.util.List; +import static org.junit.runner.Description.createSuiteDescription; import static org.junit.runner.Description.createTestDescription; +import static org.junit.Assert.*; public class FilterFactoryTest - extends TestCase { @RunWith( org.junit.runners.Suite.class ) @org.junit.runners.Suite.SuiteClasses( { FirstClass.class, SecondClass.class } ) @@ -57,19 +53,19 @@ public class FilterFactoryTest @Test public void testMethod() { - System.out.println( "FirstClass#testMethod" ); + //System.out.println( "FirstClass#testMethod" ); } @Test public void secondTestMethod() { - System.out.println( "FirstClass#secondTestMethod" ); + //System.out.println( "FirstClass#secondTestMethod" ); } @Test public void otherMethod() { - System.out.println( "FirstClass#otherMethod" ); + //System.out.println( "FirstClass#otherMethod" ); } } @@ -78,13 +74,13 @@ public class FilterFactoryTest @Test public void testMethod() { - System.out.println( "SecondClass#testMethod" ); + //System.out.println( "SecondClass#testMethod" ); } @Test public void secondTestMethod() { - System.out.println( "SecondClass#secondTestMethod" ); + //System.out.println( "SecondClass#secondTestMethod" ); } } @@ -93,13 +89,13 @@ public class FilterFactoryTest @Test public void testMethod() { - System.out.println( "ThirdClass#testMethod" ); + //System.out.println( "ThirdClass#testMethod" ); } @Test public void secondTestMethod() { - System.out.println( "ThirdClass#secondTestMethod" ); + //System.out.println( "ThirdClass#secondTestMethod" ); } } @@ -114,15 +110,121 @@ public class FilterFactoryTest private static final Description secondTestMethodInSecondClass = createTestDescription( SecondClass.class, "secondTestMethod" ); - private static final String firstClassName = FirstClass.class.getName(); + private static final String firstClassName = FirstClass.class.getName().replace( '.', '/' ); - private static final String secondClassName = SecondClass.class.getName(); + private static final String secondClassName = SecondClass.class.getName().replace( '.', '/' ); + + private static final String firstClassRegex = FirstClass.class.getName().replace( "$", "\\$" ); + + private static final String secondClassRegex = SecondClass.class.getName().replace( "$", "\\$" ); private Filter createMethodFilter( String requestString ) { return new FilterFactory( getClass().getClassLoader() ).createMethodFilter( requestString ); } + @Test + public void testSanity() + { + ResolvedTest test = new ResolvedTest( ResolvedTest.Type.CLASS, " \t \n ", true ); + assertNull( test.getTestClassPattern() ); + assertNull( test.getTestMethodPattern() ); + assertFalse( test.hasTestClassPattern() ); + assertFalse( test.hasTestMethodPattern() ); + assertTrue( test.isEmpty() ); + assertTrue( test.isRegexTestClassPattern() ); + assertFalse( test.isRegexTestMethodPattern() ); + test = new ResolvedTest( ResolvedTest.Type.METHOD, " \n \t ", true ); + assertNull( test.getTestClassPattern() ); + assertNull( test.getTestMethodPattern() ); + assertFalse( test.hasTestClassPattern() ); + assertFalse( test.hasTestMethodPattern() ); + assertTrue( test.isEmpty() ); + assertFalse( test.isRegexTestClassPattern() ); + assertTrue( test.isRegexTestMethodPattern() ); + test = new ResolvedTest( ResolvedTest.Type.METHOD, " \n ", false ); + assertNull( test.getTestClassPattern() ); + assertNull( test.getTestMethodPattern() ); + assertFalse( test.hasTestClassPattern() ); + assertFalse( test.hasTestMethodPattern() ); + assertTrue( test.isEmpty() ); + assertFalse( test.isRegexTestClassPattern() ); + assertFalse( test.isRegexTestMethodPattern() ); + test = new ResolvedTest( " \n \t ", " \n \t ", false ); + assertNull( test.getTestClassPattern() ); + assertNull( test.getTestMethodPattern() ); + assertFalse( test.hasTestClassPattern() ); + assertFalse( test.hasTestMethodPattern() ); + assertTrue( test.isEmpty() ); + assertFalse( test.isRegexTestClassPattern() ); + assertFalse( test.isRegexTestMethodPattern() ); + } + + @Test + public void testNegativeIllegalRegex() + { + try { + new TestListResolver( "#%regex[.*.Test.class]" ); + } + catch ( IllegalArgumentException e ) + { + // expected in junit 3.x + } + } + + @Test + public void testNegativeIllegalRegex2() + { + try { + new TestListResolver( "%regex[.*.Test.class]#" ); + } + catch ( IllegalArgumentException e ) + { + // expected in junit 3.x + } + } + + @Test + public void testNegativeEmptyRegex() + { + TestListResolver resolver = new TestListResolver( "%regex[ ]" ); + assertTrue( resolver.getExcludedPatterns().isEmpty() ); + assertTrue( resolver.getIncludedPatterns().isEmpty() ); + assertTrue( resolver.isEmpty() ); + assertNull( resolver.getPluginParameterTest() ); + assertFalse( resolver.hasExcludedMethodPatterns() ); + assertFalse( resolver.hasIncludedMethodPatterns() ); + assertFalse( resolver.hasMethodPatterns() ); + } + + @Test + public void testNegativeEmptyRegexWithHash() + { + TestListResolver resolver = new TestListResolver( "%regex[# ]" ); + assertTrue( resolver.getExcludedPatterns().isEmpty() ); + assertTrue( resolver.getIncludedPatterns().isEmpty() ); + assertTrue( resolver.isEmpty() ); + assertNull( resolver.getPluginParameterTest() ); + assertFalse( resolver.hasExcludedMethodPatterns() ); + assertFalse( resolver.hasIncludedMethodPatterns() ); + assertFalse( resolver.hasMethodPatterns() ); + } + + @Test + public void testNegativeRegexWithEmptyMethod() + { + TestListResolver resolver = new TestListResolver( "%regex[.*.Test.class# ]" ); + assertFalse( resolver.isEmpty() ); + assertTrue( resolver.getExcludedPatterns().isEmpty() ); + assertFalse( resolver.getIncludedPatterns().isEmpty() ); + assertEquals( 1, resolver.getIncludedPatterns().size() ); + assertEquals( "%regex[.*.Test.class]", resolver.getPluginParameterTest() ); + assertFalse( resolver.hasExcludedMethodPatterns() ); + assertFalse( resolver.hasIncludedMethodPatterns() ); + assertFalse( resolver.hasMethodPatterns() ); + } + + @Test public void testBackwardsCompatibilityNullMethodFilter() { Filter filter = createMethodFilter( null ); @@ -134,6 +236,7 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testBackwardsCompatibilityEmptyMethodFilter() { Filter filter = createMethodFilter( "" ); @@ -145,6 +248,7 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testBackwardsCompatibilityBlankMethodFilter() { Filter filter = createMethodFilter( " \n" ); @@ -156,8 +260,9 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testBackwardsCompatibilityTestParameterClass() { - Filter filter = createMethodFilter( FirstClass.class.getName() ); + Filter filter = createMethodFilter( firstClassName ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class ).filterWith( filter ) ); assertTrue( result.wasSuccessful() ); @@ -166,8 +271,9 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testBackwardsCompatibilityTestParameterJavaClass() { - Filter filter = createMethodFilter( FirstClass.class.getName() + ".java" ); + Filter filter = createMethodFilter( firstClassName + ".java" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class ).filterWith( filter ) ); assertTrue( result.wasSuccessful() ); @@ -176,8 +282,9 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testBackwardsCompatibilityTestParameterMethod1() { - Filter filter = createMethodFilter( FirstClass.class.getName().replace( '.', '/' ) + ".java#testMethod" ); + Filter filter = createMethodFilter( firstClassName + ".java#testMethod" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class ).filterWith( filter ) ); assertTrue( result.wasSuccessful() ); @@ -186,8 +293,9 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testBackwardsCompatibilityTestParameterMethod2() { - Filter filter = createMethodFilter( FirstClass.class.getName().replace( '.', '/' ) + "#testMethod" ); + Filter filter = createMethodFilter( firstClassName + "#testMethod" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class ).filterWith( filter ) ); assertTrue( result.wasSuccessful() ); @@ -196,8 +304,9 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testBackwardsCompatibilityTestParameterMethod3() { - Filter filter = createMethodFilter( FirstClass.class.getName() + "#testMethod" ); + Filter filter = createMethodFilter( firstClassName + "#testMethod" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class ).filterWith( filter ) ); assertTrue( result.wasSuccessful() ); @@ -206,8 +315,10 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testRegexWithWildcard() { - Filter filter = createMethodFilter( "%regex[" + FirstClass.class.getName() + ".*]" ); + Filter filter = + createMethodFilter( "%regex[" + firstClassRegex + ".*]" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class ).filterWith( filter ) ); assertTrue( result.wasSuccessful() ); @@ -216,8 +327,10 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testRegexWithWildcardClass() { - Filter filter = createMethodFilter( "%regex[" + FirstClass.class.getName() + ".*.class]" ); + Filter filter = + createMethodFilter( "%regex[" + firstClassRegex + ".*.class]" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class ).filterWith( filter ) ); assertTrue( result.wasSuccessful() ); @@ -226,8 +339,9 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testRegexWithExactClass() { - Filter filter = createMethodFilter( "%regex[" + FirstClass.class.getName() + ".class]" ); + Filter filter = createMethodFilter( "%regex[" + firstClassRegex + ".class]" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class ).filterWith( filter ) ); assertTrue( result.wasSuccessful() ); @@ -236,16 +350,20 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testRegexWithWildcardJavaClassNegativeTest() { - Filter filter = createMethodFilter( "%regex[" + FirstClass.class.getName().replace( '.', '/' ) + ".*.java]" ); + Filter filter = createMethodFilter( "%regex[" + firstClassRegex + ".*.class]" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class ).filterWith( filter ) ); - assertFalse( result.wasSuccessful() ); + assertTrue( result.wasSuccessful() ); + assertEquals( 3, result.getRunCount() ); + assertEquals( 0, result.getFailureCount() ); + assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testRegexWithTwoClasses() { - Filter filter = createMethodFilter( "%regex[" + FirstClass.class.getName() + ".*" - + "|" + SecondClass.class.getName() + ".*]" ); + Filter filter = createMethodFilter( "%regex[" + firstClassRegex + ".*|" + secondClassRegex + ".*]" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -255,9 +373,9 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testRegexWithTwoClassesComplement() { - Filter filter = createMethodFilter( "!%regex[" + FirstClass.class.getName() + ".*" - + "|" + SecondClass.class.getName() + ".*]" ); + Filter filter = createMethodFilter( "!%regex[" + firstClassRegex + ".*|" + secondClassRegex + ".*]" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -267,9 +385,10 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testRegexWithTwoClassesAndOneMethod() { - Filter filter = createMethodFilter( "%regex[" + FirstClass.class.getName() + ".*" - + "|" + SecondClass.class.getName() + ".*]#otherMethod" ); + Filter filter = + createMethodFilter( "%regex[" + firstClassRegex + ".*|" + secondClassRegex + ".* # otherMethod]" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -279,9 +398,10 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testRegexWithTwoClassesAndOneMethodComplement() { - Filter filter = createMethodFilter( "!%regex[" + FirstClass.class.getName() + ".*" - + "|" + SecondClass.class.getName() + ".*]#otherMethod" ); + Filter filter = + createMethodFilter( "!%regex[" + firstClassRegex + ".*|" + secondClassRegex + ".*# otherMethod]" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -291,33 +411,9 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testRegexWithTwoClassesAndWildcardMethod() { - Filter filter = createMethodFilter( "%regex[" + FirstClass.class.getName() + ".*" - + "|" + SecondClass.class.getName() + ".*]#test*" ); - JUnitCore core = new JUnitCore(); - Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) - .filterWith( filter ) ); - assertTrue( result.wasSuccessful() ); - assertEquals( 2, result.getRunCount() ); - assertEquals( 0, result.getFailureCount() ); - assertEquals( 0, result.getIgnoreCount() ); - } - - public void testRegexWithTwoClassesAndWildcardMethodComplement() { - Filter filter = createMethodFilter( "!%regex[" + FirstClass.class.getName() + ".*" - + "|" + SecondClass.class.getName() + ".*]#test*" ); - JUnitCore core = new JUnitCore(); - Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) - .filterWith( filter ) ); - assertTrue( result.wasSuccessful() ); - assertEquals( 5, result.getRunCount() ); - assertEquals( 0, result.getFailureCount() ); - assertEquals( 0, result.getIgnoreCount() ); - } - - public void testRegexWithTwoClassesAndRegexMethod() { - Filter filter = createMethodFilter( "%regex[" + FirstClass.class.getName() + ".*" - + "|" + SecondClass.class.getName() + ".*]#%regex[test.*]" ); + Filter filter = createMethodFilter( "%regex[" + firstClassRegex + ".*|" + secondClassRegex + ".*#test.* ]" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -327,9 +423,9 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testRegexWithTwoClassesAndRegexMethodComplement() { - Filter filter = createMethodFilter( "!%regex[" + FirstClass.class.getName() + ".*" - + "|" + SecondClass.class.getName() + ".*]#%regex[test.*]" ); + Filter filter = createMethodFilter( "!%regex[" + firstClassRegex + ".*|" + secondClassRegex + ".*#test.*]" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -339,9 +435,10 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testRegexWithTwoClassesAndRegexMethods() { - Filter filter = createMethodFilter( "%regex[" + FirstClass.class.getName() + ".*" - + "|" + SecondClass.class.getName() + ".*]#%regex[test.*|other.*]" ); + Filter filter = + createMethodFilter( "%regex[ " + firstClassRegex + ".*|" + secondClassRegex + ".* # test.*|other.* ]" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -351,35 +448,10 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testRegexWithTwoClassesAndRegexMethodsComplement() { - Filter filter = createMethodFilter( "!%regex[" + FirstClass.class.getName() + ".*" - + "|" + SecondClass.class.getName() + ".*]#%regex[test.*|other.*]" ); - JUnitCore core = new JUnitCore(); - Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) - .filterWith( filter ) ); - assertTrue( result.wasSuccessful() ); - assertEquals( 4, result.getRunCount() ); - assertEquals( 0, result.getFailureCount() ); - assertEquals( 0, result.getIgnoreCount() ); - } - - public void testRegexWithTwoClassesAndMultipleRegexMethods() { - Filter filter = createMethodFilter( "%regex[" + FirstClass.class.getName() + ".*" - + "|" + SecondClass.class.getName() + ".*]" - + "#%regex[test.*]+%regex[other.*]" ); - JUnitCore core = new JUnitCore(); - Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) - .filterWith( filter ) ); - assertTrue( result.wasSuccessful() ); - assertEquals( 3, result.getRunCount() ); - assertEquals( 0, result.getFailureCount() ); - assertEquals( 0, result.getIgnoreCount() ); - } - - public void testRegexWithTwoClassesAndMultipleRegexMethodsComplement() { - Filter filter = createMethodFilter( "!%regex[" + FirstClass.class.getName() + ".*" - + "|" + SecondClass.class.getName() + ".*]" - + "#%regex[test.*]+%regex[other.*]" ); + Filter filter = + createMethodFilter( "!%regex[" + firstClassRegex + ".*|" + secondClassRegex + ".* # test.*|other.* ]" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -389,9 +461,10 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testMultipleRegexClasses() { - Filter filter = createMethodFilter( "%regex[" + FirstClass.class.getName() + ".*]," - + "%regex[" + SecondClass.class.getName() + ".*]" ); + Filter filter = + createMethodFilter( "%regex[" + firstClassRegex + ".*], %regex[" + secondClassRegex + ".*]" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -401,9 +474,10 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testMultipleRegexClassesComplement() { - Filter filter = createMethodFilter( "!%regex[" + FirstClass.class.getName() + ".*]," - + "!%regex[" + SecondClass.class.getName() + ".*]" ); + Filter filter = + createMethodFilter( "!%regex[" + firstClassRegex + ".*] , !%regex[" + secondClassRegex + ".*]" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -413,8 +487,9 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testMultipleClasses() { - Filter filter = createMethodFilter( FirstClass.class.getName() + "," + SecondClass.class.getName() ); + Filter filter = createMethodFilter( firstClassName + "," + secondClassName ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -424,9 +499,9 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testMultipleClassesMethods() { - Filter filter = createMethodFilter( FirstClass.class.getName() + "#other*," - + SecondClass.class.getName() + "#*TestMethod" ); + Filter filter = createMethodFilter( firstClassName + "#other*," + secondClassName + "#*TestMethod" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -436,9 +511,10 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testMultipleClassesAndMultipleMethodsWithWildcards() { - Filter filter = createMethodFilter( FirstClass.class.getName() + "#other*+second*Method," - + SecondClass.class.getName() + "#*TestMethod" ); + Filter filter = createMethodFilter( firstClassName + "#other*+second*Method," + + secondClassName + "#*TestMethod" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -448,9 +524,10 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testMultipleClassesAndMultipleMethodsWithRegex() { - Filter filter = createMethodFilter( FirstClass.class.getName() + "#%regex[other.*|second.*Method]," - + SecondClass.class.getName() + "#%regex[.*TestMethod]" ); + Filter filter = createMethodFilter( "%regex[" + firstClassRegex + ".class#other.*|second.*Method]," + + "%regex[" + secondClassRegex + ".class#.*TestMethod]" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -460,9 +537,10 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testMultipleClassesAndMultipleMethodsMix() { - Filter filter = createMethodFilter( FirstClass.class.getName() + "#%regex[other.*|second.*Method]," - + SecondClass.class.getName() + "#*TestMethod" ); + Filter filter = createMethodFilter( "%regex[" + firstClassRegex + ".class # other.*|second.*Method]," + + secondClassName + "#*TestMethod" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -472,9 +550,10 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testMultipleClassesAndMultipleMethods() { - Filter filter = createMethodFilter( FirstClass.class.getName() + "#other*+secondTestMethod," - + SecondClass.class.getName() + "#*TestMethod" ); + Filter filter = createMethodFilter( firstClassName + "#other*+secondTestMethod," + + secondClassName + "#*TestMethod" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -484,8 +563,9 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testMultipleClassesComplement() { - Filter filter = createMethodFilter( "!" + FirstClass.class.getName() + ",!" + SecondClass.class.getName() ); + Filter filter = createMethodFilter( "!" + firstClassName + ",!" + secondClassName ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -495,9 +575,11 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testMultipleRegexClassesMethods() { - Filter filter = createMethodFilter( "%regex[" + FirstClass.class.getName() + ".*]#%regex[test.*]+%regex[other.*]," - + "%regex[" + SecondClass.class.getName() + ".*]#%regex[second.*]" ); + Filter filter = + createMethodFilter( "%regex[" + firstClassRegex + ".* # test.*|other.*]," + + "%regex[" + secondClassRegex + ".*#second.*]" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -507,9 +589,11 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testMultipleRegexClassesMethodsComplement() { - Filter filter = createMethodFilter( "!%regex[" + FirstClass.class.getName() + ".*]#%regex[test.*]+%regex[other.*]," - + "!%regex[" + SecondClass.class.getName() + ".*]#%regex[second.*]" ); + Filter filter = + createMethodFilter( "!%regex[" + firstClassRegex + ".* # test.*|other.*]," + + "!%regex[" + secondClassRegex + ".*#second.*]" ); JUnitCore core = new JUnitCore(); Result result = core.run( Request.classes( FirstClass.class, SecondClass.class, ThirdClass.class ) .filterWith( filter ) ); @@ -519,12 +603,14 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testShouldMatchExactMethodName() { Filter exactFilter = createMethodFilter( "#testMethod" ); assertTrue( "exact match on name should run", exactFilter.shouldRun( testMethod ) ); } + @Test public void testShouldMatchExactMethodNameComplement() { Filter exactFilter = createMethodFilter( "!#testMethod" ); @@ -532,26 +618,59 @@ public class FilterFactoryTest assertTrue( "should run other than testMethod", exactFilter.shouldRun( secondTestMethod ) ); assertFalse( "should not run testMethod", exactFilter.shouldRun( testMethodInSecondClass ) ); assertTrue( "should run other than testMethod", exactFilter.shouldRun( secondTestMethodInSecondClass ) ); + + exactFilter = createMethodFilter( "!FilterFactoryTest$FirstClass#testMethod" ); + assertFalse( "should not run testMethod", exactFilter.shouldRun( testMethod ) ); + assertTrue( "should run other than testMethod", exactFilter.shouldRun( secondTestMethod ) ); + assertTrue( "should not run testMethod", exactFilter.shouldRun( testMethodInSecondClass ) ); + assertTrue( "should run other than testMethod", exactFilter.shouldRun( secondTestMethodInSecondClass ) ); + + exactFilter = + createMethodFilter( "!FilterFactoryTest$FirstClass#testMethod, !FilterFactoryTest$SecondClass#testMethod" ); + assertFalse( "should not run testMethod", exactFilter.shouldRun( testMethod ) ); + assertTrue( "should run other than testMethod", exactFilter.shouldRun( secondTestMethod ) ); + assertFalse( "should not run testMethod", exactFilter.shouldRun( testMethodInSecondClass ) ); + assertTrue( "should run other than testMethod", exactFilter.shouldRun( secondTestMethodInSecondClass ) ); } + @Test public void testShouldMatchExactMethodNameWithHash() { - Filter exactFilter = createMethodFilter( "#testMethod" ); + final Filter exactFilter = createMethodFilter( "#testMethod" ); assertTrue( "exact match on name should run", exactFilter.shouldRun( testMethod ) ); } + @Test + public void testShouldNotNonExistingMethod() + { + String sourceFile = "pkg" + File.separator + "XMyTest.class"; + assertFalse( new TestListResolver( "#testMethod" ).shouldRun( sourceFile, null ) ); + } + + @Test + public void testShouldNotRunDifferentMethods() + { + final Filter exactFilter = createMethodFilter( "#testMethod" ); + Description testCase = createSuiteDescription( FirstClass.class ); + testCase.addChild( otherMethod ); + assertFalse( "exact match test case", exactFilter.shouldRun( testCase ) ); + } + + @Test public void testShouldNotRunExactMethodWithoutClass() { Filter exactFilter = createMethodFilter( "#testMethod" ); assertFalse( "should run containing matching method", exactFilter.shouldRun( secondTestMethod ) ); } + @Test public void testShouldNotMatchExactOnOtherMethod() { Filter exactFilter = createMethodFilter( "#testMethod" ); assertFalse( "should not run other methods", exactFilter.shouldRun( otherMethod ) ); } + @Test public void testShouldMatchWildCardsInMethodName() { Filter starAtEnd = createMethodFilter( "#test*" ); @@ -576,12 +695,14 @@ public class FilterFactoryTest assertTrue( "match containing star and question mark should run", starAndQuestion.shouldRun( testMethod ) ); } + @Test public void testShouldMatchExactClassAndMethod() { Filter exactFilter = createMethodFilter( firstClassName + "#testMethod" ); assertTrue( "exact match on name should run", exactFilter.shouldRun( testMethod ) ); } + @Test public void testShouldMatchSimpleClassNameWithMethod() { Filter exactFilter = createMethodFilter( "FilterFactoryTest$FirstClass#testMethod" ); @@ -589,6 +710,25 @@ public class FilterFactoryTest assertFalse( "other method should not match", exactFilter.shouldRun( otherMethod ) ); } + @Test + public void testShouldMatchNestedClassAsRegexWithMethod() + { + Filter exactFilter = + createMethodFilter( "%regex[.*.common.junit48.FilterFactoryTest\\$FirstClass.class#testMethod]" ); + assertTrue( "exact match on name should run", exactFilter.shouldRun( testMethod ) ); + assertFalse( "other method should not match", exactFilter.shouldRun( otherMethod ) ); + } + + @Test + public void testShouldMatchNestedCanonicalClassAsRegexWithMethod() + { + Filter exactFilter = + createMethodFilter( "%regex[.*.common.junit48.FilterFactoryTest.FirstClass.class#testMethod]" ); + assertTrue( "exact match on name should run", exactFilter.shouldRun( testMethod ) ); + assertFalse( "other method should not match", exactFilter.shouldRun( otherMethod ) ); + } + + @Test public void testShouldMatchClassNameWithWildcardAndMethod() { Filter exactFilter = createMethodFilter( "*First*#testMethod" ); @@ -596,6 +736,7 @@ public class FilterFactoryTest assertFalse( "other method should not match", exactFilter.shouldRun( otherMethod ) ); } + @Test public void testShouldMatchClassNameWithWildcardCompletely() { Filter exactFilter = createMethodFilter( "First*#testMethod" ); @@ -603,6 +744,7 @@ public class FilterFactoryTest assertFalse( "other method should not match", exactFilter.shouldRun( otherMethod ) ); } + @Test public void testShouldMatchMultipleMethodsSeparatedByComma() { Filter exactFilter = createMethodFilter( firstClassName + "#testMethod,#secondTestMethod" ); @@ -614,9 +756,10 @@ public class FilterFactoryTest assertFalse( "other method should not match", exactFilter.shouldRun( otherMethod ) ); } + @Test public void testShouldMatchMultipleMethodsInSameClassSeparatedByPlus() { - Filter exactFilter = createMethodFilter( FirstClass.class.getName() + "#testMethod+secondTestMethod" ); + Filter exactFilter = createMethodFilter( firstClassName + "#testMethod+secondTestMethod" ); assertTrue( "exact match on name should run", exactFilter.shouldRun( testMethod ) ); assertTrue( "exact match on name should run", exactFilter.shouldRun( secondTestMethod ) ); @@ -627,6 +770,7 @@ public class FilterFactoryTest assertFalse( "other method should not match", exactFilter.shouldRun( otherMethod ) ); } + @Test public void testShouldRunCompleteClassWhenSeparatedByCommaWithoutHash() { Filter exactFilter = createMethodFilter( firstClassName + "#testMethod," + secondClassName ); @@ -640,6 +784,7 @@ public class FilterFactoryTest assertTrue( "should run complete second class", exactFilter.shouldRun( secondTestMethodInSecondClass ) ); } + @Test public void testShouldRunSuitesContainingExactMethodName() { Description suite = Description.createSuiteDescription( Suite.class ); @@ -650,6 +795,7 @@ public class FilterFactoryTest assertTrue( "should run suites containing matching method", exactFilter.shouldRun( suite ) ); } + @Test public void testShouldSkipSuitesNotContainingExactMethodName() { Filter exactFilter = createMethodFilter( "#otherMethod" ); @@ -661,6 +807,7 @@ public class FilterFactoryTest assertFalse( "should not run suites containing no matches", exactFilter.shouldRun( suite ) ); } + @Test public void testSingleMethodWithJUnitCoreSuite() { Filter filter = createMethodFilter( "#testMethod" ); @@ -672,67 +819,44 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } - /*public void testSuiteAggregator() - throws InitializationError + @Test + public void testShouldNotRunNonExistingMethodJUnitCoreSuite() { + Filter filter = createMethodFilter( "#nonExisting" ); + JUnitCore core = new JUnitCore(); + Result result = core.run( Request.classes( Suite.class ).filterWith( filter ) ); + assertFalse( result.wasSuccessful() ); + assertEquals( 1, result.getRunCount() );//running the Suite + assertEquals( 1, result.getFailureCount() ); + assertEquals( 0, result.getIgnoreCount() ); + } - class FilteringRequest - extends Request - { - private Runner filteredRunner; - - public FilteringRequest( Request req, Filter filter ) - { - try - { - Runner runner = req.getRunner(); - filter.apply( runner ); - filteredRunner = runner; - } - catch ( NoTestsRemainException e ) - { - filteredRunner = null; - } - } - - @Override - public Runner getRunner() - { - return filteredRunner; - } - } + @Test + public void testShouldRunNonExistingMethodJUnitCoreSuite() + { + Filter filter = createMethodFilter( "!#nonExisting" ); + JUnitCore core = new JUnitCore(); + Result result = core.run( Request.classes( Suite.class ).filterWith( filter ) ); + assertTrue( result.wasSuccessful() ); + assertEquals( 5, result.getRunCount() ); + assertEquals( 0, result.getFailureCount() ); + assertEquals( 0, result.getIgnoreCount() ); + } - Request req = Request.classes( new Computer() - { - private final List<Runner> runners = new ArrayList<Runner>(); - - @Override - public Runner getSuite( RunnerBuilder builder, Class<?>[] classes ) - throws InitializationError - { - super.getSuite( builder, classes ); - return new org.junit.runners.Suite( (Class<?>) null, runners ) {}; - } - - @Override - protected Runner getRunner( RunnerBuilder builder, Class<?> testClass ) - throws Throwable - { - Runner runner = new org.junit.runners.Suite( (Class<?>) null, Arrays.asList( super.getRunner( builder, testClass ) ) ) {}; - runners.add( runner ); - return runner; - } - }, Suite.class ); - Filter filter = createMethodFilter( "FilterFactoryTest$Suite" ); - Request request = new FilteringRequest( req, filter ); - JUnitCore core = new JUnitCore(); - Result result = core.run( request ); + @Test + public void testClassAndMethodJUnitCoreSuite() + { + Filter filter = createMethodFilter( "FilterFactoryTest$FirstClass#testMethod" ); + JUnitCore core = new JUnitCore(); + Result result = core.run( Request.classes( Suite.class, FirstClass.class, SecondClass.class ) + .filterWith( filter ) ); assertTrue( result.wasSuccessful() ); assertEquals( 2, result.getRunCount() ); assertEquals( 0, result.getFailureCount() ); assertEquals( 0, result.getIgnoreCount() ); - }*/ + } + @Test public void testSingleMethodWithJUnitCoreFirstClass() { Filter filter = createMethodFilter( "#testMethod" ); @@ -744,6 +868,7 @@ public class FilterFactoryTest assertEquals( 0, result.getIgnoreCount() ); } + @Test public void testWithJUnitCoreFirstClassAndSingleMethod() { Filter filter = createMethodFilter( "FilterFactoryTest$FirstClass#testMethod" ); @@ -754,4 +879,126 @@ public class FilterFactoryTest assertEquals( 0, result.getFailureCount() ); assertEquals( 0, result.getIgnoreCount() ); } + + @Test + public void testShouldRunSuite() + { + TestListResolver filter = new TestListResolver( "Su?te" ); + filter = filter.createMethodFilters(); + JUnitCore core = new JUnitCore(); + Result result = core.run( Request.classes( Suite.class ).filterWith( new MethodFilter( filter ) ) ); + assertTrue( result.wasSuccessful() ); + assertEquals( 5, result.getRunCount() ); + assertEquals( 0, result.getFailureCount() ); + assertEquals( 0, result.getIgnoreCount() ); + } + + @Test + public void testShouldRunParameterized() + { + TestListResolver filter = + new TestListResolver( "#testAA[?]+testB?[?], " + + "PT#testC*, " + + "!PT.java#testCY[?]," + + "%regex[.*.tests.pt.PT.class#w.*|x.*T.*]" ); + filter = filter.createMethodFilters(); + JUnitCore core = new JUnitCore(); + Result result = core.run( Request.classes( PT.class ).filterWith( new MethodFilter( filter ) ) ); + assertTrue( result.wasSuccessful() ); + assertEquals( 12, result.getRunCount() ); + assertEquals( 0, result.getFailureCount() ); + assertEquals( 0, result.getIgnoreCount() ); + } + + @Test + public void testShouldRunParameterizedWithPlusDelimiter() + { + // Running parameterized tests: w12T34, x12T34 and x12T35. + // Two parameters "x" and "y" in the test case PT.java change the method descriptions to the following ones: + // w12T34[0], w12T34[1] + // x12T34[0], x12T34[1] + // x12T35[0], x12T35[1] + TestListResolver filter = + new TestListResolver( "%regex[.*.PT.* # w.*|x(\\d+)T(\\d+)\\[(\\d+)\\]]" ); + filter = filter.createMethodFilters(); + JUnitCore core = new JUnitCore(); + Result result = core.run( Request.classes( PT.class ).filterWith( new MethodFilter( filter ) ) ); + assertTrue( result.wasSuccessful() ); + assertEquals( 6, result.getRunCount() ); + assertEquals( 0, result.getFailureCount() ); + assertEquals( 0, result.getIgnoreCount() ); + } + + @Test + public void testTestListResolver() + { + assertFalse( new TestListResolver( "b/ATest.java" ).shouldRun( "tests/a/ATest.class", null ) ); + assertFalse( new TestListResolver( "b/Test.java" ).shouldRun( "a/ATest.class", null ) ); + assertTrue( new TestListResolver( "ATest.java" ).shouldRun( "tests/a/ATest.class", null ) ); + assertTrue( new TestListResolver( "a/ATest.java" ).shouldRun( "a/ATest.class", null ) ); + assertTrue( new TestListResolver( "**/ATest.java" ).shouldRun( "a/ATest.class", null ) ); + Class<?> testsATest = org.apache.maven.surefire.common.junit48.tests.ATest.class; + Class<?> aTest = org.apache.maven.surefire.common.junit48.tests.a.ATest.class; + assertFalse( new TestListResolver( "b/ATest.java" ).shouldRun( testsATest, null ) ); + assertFalse( new TestListResolver( "b/ATest.java" ).shouldRun( aTest, null ) ); + assertTrue( new TestListResolver( "ATest.java" ).shouldRun( testsATest, null ) ); + assertTrue( new TestListResolver( "a/ATest.java" ).shouldRun( aTest, null ) ); + assertTrue( new TestListResolver( "**/ATest.java" ).shouldRun( aTest, null ) ); + } + + @Test + public void testMatchPatterns() + { + String sourceFile = "pkg" + File.separator + "MyTest.class"; + boolean matchPattern = + MatchPatterns.from( "**" + File.separator + "MyTest.class" ).matches( sourceFile, true ); + assertTrue( matchPattern ); + + matchPattern = MatchPatterns.from( "MyTest.class" ).matches( sourceFile, true ); + assertFalse( matchPattern ); + + matchPattern = MatchPatterns.from( "MyTest.class" ).matches( "MyTest.class", true ); + assertTrue( matchPattern ); + + matchPattern = MatchPatterns.from( "**" + File.separator + "MyTest.class" ).matches( "MyTest.class", true ); + assertTrue( matchPattern ); + } + + @Test + public void testNegativePatternOnPackageLessClass() + { + String sourceFile = "pkg" + File.separator + "XMyTest.class"; + assertFalse( new TestListResolver( "**/MyTest.java" ).shouldRun( sourceFile, null ) ); + assertFalse( new TestListResolver( "MyTest.java" ).shouldRun( sourceFile, null ) ); + assertFalse( new TestListResolver( "MyTest.java" ).shouldRun( "XMyTest.class", null ) ); + assertFalse( new TestListResolver( "**/MyTest.java" ).shouldRun( "XMyTest.class", null ) ); + } + + @Test + public void testPatternOnPackageLessClass() + { + String sourceFile = "pkg" + File.separator + "MyTest.class"; + assertTrue( new TestListResolver( "**/MyTest.java" ).shouldRun( sourceFile, null ) ); + assertTrue( new TestListResolver( "MyTest.java" ).shouldRun( sourceFile, null ) ); + assertTrue( new TestListResolver( "MyTest.java" ).shouldRun( "MyTest.class", null ) ); + assertTrue( new TestListResolver( "**/MyTest.java" ).shouldRun( "MyTest.class", null ) ); + } + + @Test + public void testIncludesExcludes() + { + Collection<String> inc = Arrays.asList( "**/NotIncludedByDefault.java", "**/*Test.java" ); + Collection<String> exc = Arrays.asList( "**/DontRunTest.*" ); + TestListResolver resolver = new TestListResolver( inc, exc ); + assertFalse( resolver.shouldRun( "org/test/DontRunTest.class", null ) ); + assertTrue( resolver.shouldRun( "org/test/DefaultTest.class", null ) ); + assertTrue( resolver.shouldRun( "org/test/NotIncludedByDefault.class", null ) ); + } + + @Test + public void testSimple() + { + TestListResolver resolver = new TestListResolver( "NotIncludedByDefault" ); + assertTrue( resolver.shouldRun( "org/test/NotIncludedByDefault.class", null ) ); + } } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/866a535b/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/tests/ATest.java ---------------------------------------------------------------------- diff --git a/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/tests/ATest.java b/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/tests/ATest.java new file mode 100644 index 0000000..59cc2eb --- /dev/null +++ b/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/tests/ATest.java @@ -0,0 +1,23 @@ +package org.apache.maven.surefire.common.junit48.tests; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +public class ATest +{ +} http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/866a535b/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/tests/a/ATest.java ---------------------------------------------------------------------- diff --git a/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/tests/a/ATest.java b/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/tests/a/ATest.java new file mode 100644 index 0000000..333ffe8 --- /dev/null +++ b/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/tests/a/ATest.java @@ -0,0 +1,23 @@ +package org.apache.maven.surefire.common.junit48.tests.a; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +public class ATest +{ +} http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/866a535b/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/tests/pt/PT.java ---------------------------------------------------------------------- diff --git a/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/tests/pt/PT.java b/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/tests/pt/PT.java new file mode 100644 index 0000000..d16153b --- /dev/null +++ b/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/tests/pt/PT.java @@ -0,0 +1,86 @@ +package org.apache.maven.surefire.common.junit48.tests.pt; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import java.util.Arrays; + +@RunWith( Parameterized.class ) +public class PT +{ + + public PT( String x ) + { + } + + @Parameterized.Parameters + public static Iterable<Object[]> data() + { + return Arrays.asList( new Object[][]{ { "x" }, { "y" } } ); + } + + @Test + public void testAA() + { + } + + @Test + public void testB5() + { + } + + @Test + public void testCX() + { + } + + @Test + public void testCY() + { + } + + @Test + public void w12T34() + { + } + + @Test + public void x12T34() + { + } + + @Test + public void x12T35() + { + } + + @Test + public void x12t36() + { + } + + @Test + public void y12t34() + { + } +} http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/866a535b/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java b/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java index 9957d1e..f30f895 100644 --- a/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java +++ b/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java @@ -164,7 +164,8 @@ public class JUnit4Provider { JUnitTestFailureListener failureListener = new JUnitTestFailureListener(); listeners.addListener( failureListener ); - execute( clazz, listeners, testResolver.isEmpty() ? null : new TestResolverFilter() ); + boolean hasMethodFilter = testResolver != null && testResolver.hasMethodPatterns(); + execute( clazz, listeners, hasMethodFilter ? new TestResolverFilter() : null ); // Rerun failing tests if rerunFailingTestsCount is larger than 0 if ( rerunFailingTestsCount > 0 ) @@ -288,10 +289,11 @@ public class JUnit4Provider private final class TestResolverFilter implements Filter { + private final TestListResolver methodFilter = JUnit4Provider.this.testResolver.createMethodFilters(); public boolean shouldRun( Class<?> testClass, Method testMethod ) { - return testResolver.shouldRun( testClass, testMethod.getName() ); + return methodFilter.shouldRun( testClass, testMethod.getName() ); } } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/866a535b/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 9cf8e34..3276b4e 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 @@ -70,11 +70,11 @@ public class JUnitCoreProvider private TestsToRun testsToRun; - private JUnit48Reflector jUnit48Reflector; + private final JUnit48Reflector jUnit48Reflector; - private RunOrderCalculator runOrderCalculator; + private final RunOrderCalculator runOrderCalculator; - private TestListResolver testResolver; + private final TestListResolver testResolver; public JUnitCoreProvider( ProviderParameters providerParameters ) { @@ -84,23 +84,10 @@ public class JUnitCoreProvider runOrderCalculator = providerParameters.getRunOrderCalculator(); jUnitCoreParameters = new JUnitCoreParameters( providerParameters.getProviderProperties() ); scannerFilter = new JUnit48TestChecker( testClassLoader ); - System.out.println( "TIBOR providerParameters=" + providerParameters ); - System.out.println( "TIBOR providerParameters.getTestRequest()=" + providerParameters.getTestRequest() ); - System.out.println( "TIBOR providerParameters.getTestRequest().getTestListResolver().getPluginParameterTest()=" - + providerParameters.getTestRequest().getTestListResolver().getPluginParameterTest() ); - System.out.println( "TIBOR includes: " - + providerParameters.getTestRequest().getTestListResolver().getIncludedFilters() ); - System.out.println( "TIBOR excludes: " - + providerParameters.getTestRequest().getTestListResolver().getExcludedFilters() ); - System.out.println( "TIBOR includes: " - + providerParameters.getTestRequest().getTestListResolver().getIncludedFilters() - .iterator().next() ); testResolver = providerParameters.getTestRequest().getTestListResolver(); rerunFailingTestsCount = providerParameters.getTestRequest().getRerunFailingTestsCount(); - - customRunListeners = - JUnit4RunListenerFactory.createCustomListeners( - providerParameters.getProviderProperties().getProperty( "listener" ) ); + customRunListeners = JUnit4RunListenerFactory.createCustomListeners( + providerParameters.getProviderProperties().getProperty( "listener" ) ); jUnit48Reflector = new JUnit48Reflector( testClassLoader ); } @@ -211,8 +198,9 @@ public class JUnitCoreProvider { final FilterFactory factory = new FilterFactory( testClassLoader ); Filter groupFilter = factory.createGroupFilter( providerParameters.getProviderProperties() ); - boolean onlyGroups = testResolver.isEmpty(); - return onlyGroups ? groupFilter : factory.and( groupFilter, factory.createMethodFilter( testResolver ) ); + TestListResolver methodFilter = createMethodFilter(); + boolean onlyGroups = methodFilter == null || methodFilter.isEmpty(); + return onlyGroups ? groupFilter : factory.and( groupFilter, factory.createMethodFilter( methodFilter ) ); } private TestsToRun scanClassPath() @@ -220,4 +208,9 @@ public class JUnitCoreProvider TestsToRun scanned = scanResult.applyFilter( scannerFilter, testClassLoader ); return runOrderCalculator.orderTestClasses( scanned ); } + + private TestListResolver createMethodFilter() + { + return testResolver == null ? null : testResolver.createMethodFilters(); + } } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/866a535b/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testng/utils/MethodSelector.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testng/utils/MethodSelector.java b/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testng/utils/MethodSelector.java index bfbc495..cdb53f0 100644 --- a/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testng/utils/MethodSelector.java +++ b/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testng/utils/MethodSelector.java @@ -36,7 +36,6 @@ import org.testng.ITestNGMethod; public class MethodSelector implements IMethodSelector { - private static TestListResolver testListResolver = null; public void setTestMethods( List arg0 ) @@ -51,7 +50,6 @@ public class MethodSelector || testngMethod.isAfterGroupsConfiguration() || testngMethod.isAfterMethodConfiguration() || testngMethod.isAfterSuiteConfiguration() || testngMethod.isAfterTestConfiguration() || shouldRun( testngMethod ); - } public static void setTestListResolver( TestListResolver testListResolver ) @@ -62,6 +60,7 @@ public class MethodSelector private static boolean shouldRun( ITestNGMethod test ) { TestListResolver resolver = MethodSelector.testListResolver; - return resolver != null && resolver.shouldRun( test.getRealClass(), test.getMethodName() ); + boolean hasTestResolver = resolver != null && !resolver.isEmpty(); + return hasTestResolver && resolver.shouldRun( test.getRealClass(), test.getMethodName() ); } } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/866a535b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java index d7f6678..32511bf 100644 --- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java +++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java @@ -67,7 +67,7 @@ public class TestNGDirectoryTestSuite private final ScanResult scanResult; - private final TestListResolver testListResolver; + private final TestListResolver methodFilter; private final RunOrderCalculator runOrderCalculator; @@ -78,7 +78,7 @@ public class TestNGDirectoryTestSuite private Class<? extends Annotation> junitTestAnnotation; public TestNGDirectoryTestSuite( String testSourceDirectory, Properties confOptions, File reportsDirectory, - TestListResolver testListResolver, RunOrderCalculator runOrderCalculator, + TestListResolver methodFilter, RunOrderCalculator runOrderCalculator, ScanResult scanResult ) { @@ -89,7 +89,7 @@ public class TestNGDirectoryTestSuite this.testSourceDirectory = testSourceDirectory; this.reportsDirectory = reportsDirectory; this.scanResult = scanResult; - this.testListResolver = testListResolver; + this.methodFilter = methodFilter; this.junitTestClass = findJUnitTestClass(); this.junitRunWithAnnotation = findJUnitRunWithAnnotation(); this.junitTestAnnotation = findJUnitTestAnnotation(); @@ -128,7 +128,7 @@ public class TestNGDirectoryTestSuite final Map optionsToUse = isJUnitTest( testClass ) ? junitOptions : options; TestNGExecutor.run( new Class[]{ testClass }, testSourceDirectory, optionsToUse, reporter, this, - reportsDirectory, testListResolver ); + reportsDirectory, methodFilter ); finishTestSuite( reporter, this ); } @@ -204,14 +204,14 @@ public class TestNGDirectoryTestSuite Class[] testClasses = testNgTestClasses.toArray( new Class[testNgTestClasses.size()] ); TestNGExecutor.run( testClasses, this.testSourceDirectory, options, reporterManager, this, - testNgReportsDirectory, testListResolver ); + testNgReportsDirectory, methodFilter ); if ( junitTestClasses.size() > 0 ) { testClasses = junitTestClasses.toArray( new Class[junitTestClasses.size()] ); TestNGExecutor.run( testClasses, testSourceDirectory, junitOptions, reporterManager, this, - junitReportsDirectory, testListResolver ); + junitReportsDirectory, methodFilter ); } finishTestSuite( reporterManager, this ); @@ -281,7 +281,7 @@ public class TestNGDirectoryTestSuite startTestSuite( reporter, this ); TestNGExecutor.run( new Class[] { testSet.getTestClass() }, this.testSourceDirectory, this.options, reporter, - this, reportsDirectory, testListResolver ); + this, reportsDirectory, methodFilter ); finishTestSuite( reporter, this ); } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/866a535b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGExecutor.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGExecutor.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGExecutor.java index e50d643..fcabbc7 100644 --- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGExecutor.java +++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGExecutor.java @@ -65,7 +65,7 @@ public class TestNGExecutor } public static void run( Class[] testClasses, String testSourceDirectory, Map options, RunListener reportManager, - TestNgTestSuite suite, File reportsDirectory, TestListResolver testListResolver ) + TestNgTestSuite suite, File reportsDirectory, TestListResolver methodFilter ) throws TestSetFailedException { TestNG testng = new TestNG( true ); @@ -74,7 +74,7 @@ public class TestNGExecutor System.out.println( "Configuring TestNG with: " + configurator.getClass().getSimpleName() ); XmlMethodSelector groupMatchingSelector = createGroupMatchingSelector( options ); - XmlMethodSelector methodNameFilteringSelector = createMethodNameFilteringSelector( testListResolver ); + XmlMethodSelector methodNameFilteringSelector = createMethodNameFilteringSelector( methodFilter ); Map<String, SuiteAndNamedTests> suitesNames = new HashMap<String, SuiteAndNamedTests>(); @@ -176,10 +176,10 @@ public class TestNGExecutor } @SuppressWarnings( "checkstyle:magicnumber" ) - private static XmlMethodSelector createMethodNameFilteringSelector( TestListResolver testListResolver ) + private static XmlMethodSelector createMethodNameFilteringSelector( TestListResolver methodFilter ) throws TestSetFailedException { - if ( testListResolver != null && !testListResolver.isEmpty() ) + if ( methodFilter != null && !methodFilter.isEmpty() ) { // the class is available in the testClassPath String clazzName = "org.apache.maven.surefire.testng.utils.MethodSelector"; @@ -187,7 +187,7 @@ public class TestNGExecutor { Class<?> clazz = Class.forName( clazzName ); Method method = clazz.getMethod( "setTestListResolver", TestListResolver.class ); - method.invoke( null, testListResolver ); + method.invoke( null, methodFilter ); } catch ( Exception e ) {