You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ti...@apache.org on 2015/03/26 01:15:56 UTC
[14/19] maven-surefire git commit: [SUREFIRE] completed commit 889caca
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 )
{