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 2018/02/05 22:07:29 UTC

[16/51] [partial] maven-surefire git commit: [SUREFIRE-1471] Too long Windows path cause CI issues. Renamed surefire-intergation-tests to surefire-its.

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1209RerunAndForkCountIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1209RerunAndForkCountIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1209RerunAndForkCountIT.java
new file mode 100644
index 0000000..6ee87fb
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1209RerunAndForkCountIT.java
@@ -0,0 +1,75 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.it.VerificationException;
+import org.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.apache.maven.surefire.its.fixture.SurefireLauncher;
+import org.junit.Test;
+
+/**
+ * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
+ * @see <a href="https://issues.apache.org/jira/browse/SUREFIRE-1209">SUREFIRE-1209</a>
+ * @since 2.19
+ */
+public class Surefire1209RerunAndForkCountIT
+        extends SurefireJUnit4IntegrationTestCase
+{
+    @Test
+    public void reusableForksJUnit47()
+            throws VerificationException
+    {
+        unpack().executeTest()
+                .assertTestSuiteResults( 5, 0, 0, 0, 4 );
+    }
+
+    @Test
+    public void notReusableForksJUnit47()
+            throws VerificationException
+    {
+        unpack().reuseForks( false )
+                .executeTest()
+                .assertTestSuiteResults( 5, 0, 0, 0, 4 );
+    }
+
+    @Test
+    public void reusableForksJUnit4()
+            throws VerificationException
+    {
+        unpack().addGoal( "-Pjunit4" )
+                .executeTest()
+                .assertTestSuiteResults( 5, 0, 0, 0, 4 );
+    }
+
+    @Test
+    public void notReusableForksJUnit4()
+            throws VerificationException
+    {
+        unpack().addGoal( "-Pjunit4" )
+                .reuseForks( false )
+                .executeTest()
+                .assertTestSuiteResults( 5, 0, 0, 0, 4 );
+    }
+
+    private SurefireLauncher unpack()
+    {
+        return unpack( "surefire-1209-rerun-and-forkcount" );
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1211JUnitTestNgIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1211JUnitTestNgIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1211JUnitTestNgIT.java
new file mode 100644
index 0000000..53cd764
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1211JUnitTestNgIT.java
@@ -0,0 +1,62 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.apache.maven.surefire.its.fixture.SurefireLauncher;
+import org.junit.Test;
+
+import static org.apache.maven.surefire.its.fixture.HelperAssertions.assumeJavaVersion;
+
+/**
+ * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
+ * @see <a href="https://issues.apache.org/jira/browse/SUREFIRE-1211">SUREFIRE-1211</a>
+ * @since 2.19.1
+ */
+public class Surefire1211JUnitTestNgIT
+        extends SurefireJUnit4IntegrationTestCase
+{
+
+    @Test
+    public void withJUnit()
+    {
+        assumeJavaVersion( 1.7d );
+
+        unpack().threadCount( 1 )
+                .executeTest()
+                .verifyErrorFree( 2 );
+    }
+
+    @Test
+    public void withoutJUnit()
+    {
+        assumeJavaVersion( 1.7d );
+
+        unpack().threadCount( 1 )
+                .sysProp( "junit", "false" )
+                .executeTest()
+                .verifyErrorFree( 1 );
+    }
+
+    private SurefireLauncher unpack()
+    {
+        return unpack( "surefire-1211" );
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1260NewTestsPattern.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1260NewTestsPattern.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1260NewTestsPattern.java
new file mode 100644
index 0000000..c4031c2
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1260NewTestsPattern.java
@@ -0,0 +1,49 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.*;
+import org.junit.Test;
+
+/**
+ * Added included pattern Tests.java.
+ * <p>
+ * Found in Surefire 2.19.1.
+ *
+ * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
+ * @see <a href="https://issues.apache.org/jira/browse/SUREFIRE-1260">SUREFIRE-1260</a>
+ * @since 2.20
+ */
+public class Surefire1260NewTestsPattern
+        extends SurefireJUnit4IntegrationTestCase
+{
+    @Test
+    public void defaultConfig()
+    {
+        unpack()
+                .executeTest()
+                .verifyErrorFree( 5 );
+    }
+
+    private SurefireLauncher unpack()
+    {
+        return unpack( "/surefire-1260-new-tests-pattern" );
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1264IT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1264IT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1264IT.java
new file mode 100644
index 0000000..bd9af17
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1264IT.java
@@ -0,0 +1,58 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.junit.Test;
+
+/**
+ * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
+ * @see <a href="https://issues.apache.org/jira/browse/SUREFIRE-1264">SUREFIRE-1264</a>
+ * @since 2.20.1
+ */
+public class Surefire1264IT
+        extends SurefireJUnit4IntegrationTestCase
+{
+
+    @Test
+    public void positiveTests()
+    {
+        unpack( "surefire-1264" )
+                .setForkJvm()
+                .parallelAll()
+                .useUnlimitedThreads()
+                .sysProp( "canFail", "false" )
+                .executeTest()
+                .assertTestSuiteResults( 16, 0, 0, 0 );
+    }
+
+    @Test
+    public void negativeTests()
+    {
+        unpack( "surefire-1264" )
+                .setForkJvm()
+                .parallelAll()
+                .useUnlimitedThreads()
+                .sysProp( "canFail", "true" )
+                .mavenTestFailureIgnore( true )
+                .executeTest()
+                .assertTestSuiteResults( 16, 0, 16, 0 );
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1265Java9IT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1265Java9IT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1265Java9IT.java
new file mode 100644
index 0000000..2e92805
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1265Java9IT.java
@@ -0,0 +1,57 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.AbstractJigsawIT;
+import org.junit.Test;
+
+import java.io.IOException;
+
+@SuppressWarnings( { "javadoc", "checkstyle:javadoctype" } )
+/**
+ * IsolatedClassLoader should take platform ClassLoader as a parent ClassLoader if running on the top of JDK9.
+ * The IsolatedClassLoader should not fail like this:
+ *
+ * [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project
+ * maven-surefire-plugin-example: Execution default-test of goal
+ * org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test failed:
+ * java.lang.NoClassDefFoundError: java/sql/SQLException: java.sql.SQLException -> [Help 1]
+ *
+ * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
+ * @see <a href="https://issues.apache.org/jira/browse/SUREFIRE-1265">SUREFIRE-1265</a>
+ * @since 2.20.1
+ */
+public class Surefire1265Java9IT
+        extends AbstractJigsawIT
+{
+    @Test
+    public void shouldRunInPluginJava9() throws IOException
+    {
+        assumeJigsaw()
+                .executeTest()
+                .verifyErrorFree( 2 );
+    }
+
+    @Override
+    protected String getProjectDirectoryName()
+    {
+        return "/surefire-1265";
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1278GroupNameEndingIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1278GroupNameEndingIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1278GroupNameEndingIT.java
new file mode 100644
index 0000000..c0b0339
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1278GroupNameEndingIT.java
@@ -0,0 +1,44 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.apache.maven.surefire.its.fixture.SurefireLauncher;
+import org.junit.Test;
+
+/**
+ * Test the group filter for TestNG
+ *
+ */
+public class Surefire1278GroupNameEndingIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+    @Test
+    public void testOnlyGroups()
+    {
+        unpack().setGroups( "group" ).executeTest().verifyErrorFree( 1 );
+    }
+
+    public SurefireLauncher unpack()
+    {
+        return unpack( "/surefire-1278-group-name-ending" );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1295AttributeJvmCrashesToTestsIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1295AttributeJvmCrashesToTestsIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1295AttributeJvmCrashesToTestsIT.java
new file mode 100644
index 0000000..3ca758a
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1295AttributeJvmCrashesToTestsIT.java
@@ -0,0 +1,125 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.it.VerificationException;
+import org.apache.maven.surefire.its.fixture.OutputValidator;
+import org.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.apache.maven.surefire.its.fixture.SurefireLauncher;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.Iterator;
+import java.util.concurrent.TimeUnit;
+
+import static org.apache.commons.lang3.SystemUtils.IS_OS_LINUX;
+import static org.apache.commons.lang3.SystemUtils.IS_OS_MAC_OSX;
+import static org.fest.assertions.Assertions.assertThat;
+import static org.junit.Assert.fail;
+import static org.junit.Assume.assumeTrue;
+
+/**
+ * https://issues.apache.org/jira/browse/SUREFIRE-1295
+ * https://github.com/apache/maven-surefire/pull/136
+ *
+ * @author michaeltandy
+ * @since 2.20
+ */
+public class Surefire1295AttributeJvmCrashesToTestsIT
+        extends SurefireJUnit4IntegrationTestCase
+{
+    @Before
+    public void skipWindows()
+    {
+        assumeTrue( IS_OS_LINUX || IS_OS_MAC_OSX );
+    }
+
+    @Test
+    public void crashInFork() throws VerificationException, InterruptedException
+    {
+        SurefireLauncher launcher = unpack( "crash-during-test" );
+
+        checkCrashTypes( launcher );
+    }
+
+    @Test
+    public void crashInSingleUseFork() throws VerificationException, InterruptedException
+    {
+        SurefireLauncher launcher = unpack( "crash-during-test" )
+                                            .forkCount( 1 )
+                                            .reuseForks( false );
+
+        checkCrashTypes( launcher );
+    }
+
+    @Test
+    public void crashInReusableFork() throws VerificationException, InterruptedException
+    {
+        SurefireLauncher launcher = unpack( "crash-during-test" )
+                                            .forkPerThread()
+                                            .reuseForks( true )
+                                            .threadCount( 1 );
+
+        checkCrashTypes( launcher );
+    }
+
+    private static void checkCrashTypes( SurefireLauncher launcher )
+            throws VerificationException, InterruptedException
+    {
+        checkCrash( launcher.addGoal( "-DcrashType=exit" ) );
+        checkCrash( launcher.addGoal( "-DcrashType=abort" ) );
+        checkCrash( launcher.addGoal( "-DcrashType=segfault" ) );
+    }
+
+    private static void checkCrash( SurefireLauncher launcher ) throws VerificationException, InterruptedException
+    {
+        OutputValidator validator = launcher.maven()
+                                            .withFailure()
+                                            .executeTest()
+                                            .verifyTextInLog( "The forked VM terminated without properly saying "
+                                                                      + "goodbye. VM crash or System.exit called?"
+                                            )
+                                            .verifyTextInLog( "Crashed tests:" );
+
+        // Cannot flush log.txt stream because it is consumed internally by Verifier.
+        // Waiting for the stream to become flushed on disk.
+        TimeUnit.SECONDS.sleep( 1L );
+
+        for ( Iterator<String> it = validator.loadLogLines().iterator(); it.hasNext(); )
+        {
+            String line = it.next();
+            if ( line.contains( "Crashed tests:" ) )
+            {
+                line = it.next();
+                if ( it.hasNext() )
+                {
+                    assertThat( line ).contains( "junit44.environment.BasicTest" );
+                }
+                else
+                {
+                    fail( "Could not find any line after 'Crashed tests:'." );
+                }
+            }
+        }
+
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1364SystemPropertiesIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1364SystemPropertiesIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1364SystemPropertiesIT.java
new file mode 100644
index 0000000..d13b0f2
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1364SystemPropertiesIT.java
@@ -0,0 +1,203 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.OutputValidator;
+import org.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.apache.maven.surefire.its.fixture.SurefireLauncher;
+import org.junit.Test;
+
+/**
+ * Report XML should contain system properties of forked JVM.
+ *
+ * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
+ * @since 2.20.1
+ */
+public class Surefire1364SystemPropertiesIT
+        extends SurefireJUnit4IntegrationTestCase
+{
+    @Test
+    public void junit3Forked()
+    {
+        SurefireLauncher launcher = unpack( "surefire-1364" );
+        OutputValidator validator = launcher.setForkJvm()
+                                            .activateProfile( "junit3" )
+                                            .forkMode( "once" )
+                                            .executeTest()
+                                            .verifyErrorFree( 2 );
+
+        validator.getSurefireReportsXmlFile( "TEST-FirstTest.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+
+        validator.getSurefireReportsXmlFile( "TEST-SecondTest.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+    }
+
+    @Test
+    public void junit3InProcess()
+    {
+        SurefireLauncher launcher = unpack( "surefire-1364" );
+        OutputValidator validator = launcher.setForkJvm()
+                                            .activateProfile( "junit3" )
+                                            .forkMode( "never" )
+                                            .executeTest()
+                                            .verifyErrorFree( 2 );
+
+        validator.getSurefireReportsXmlFile( "TEST-FirstTest.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+
+        validator.getSurefireReportsXmlFile( "TEST-SecondTest.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+    }
+
+    @Test
+    public void junit4Forked()
+    {
+        SurefireLauncher launcher = unpack( "surefire-1364" );
+        OutputValidator validator = launcher.setForkJvm()
+                                            .forkMode( "once" )
+                                            .executeTest()
+                                            .verifyErrorFree( 2 );
+
+        validator.getSurefireReportsXmlFile( "TEST-FirstTest.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+
+        validator.getSurefireReportsXmlFile( "TEST-SecondTest.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+    }
+
+    @Test
+    public void junit4InProcess()
+    {
+        SurefireLauncher launcher = unpack( "surefire-1364" );
+        OutputValidator validator = launcher.setForkJvm()
+                                            .forkMode( "never" )
+                                            .executeTest()
+                                            .verifyErrorFree( 2 );
+
+        validator.getSurefireReportsXmlFile( "TEST-FirstTest.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+
+        validator.getSurefireReportsXmlFile( "TEST-SecondTest.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+    }
+
+    @Test
+    public void junit47Forked()
+    {
+        SurefireLauncher launcher = unpack( "surefire-1364" );
+        OutputValidator validator = launcher.setForkJvm()
+                                            .activateProfile( "junit47" )
+                                            .forkMode( "once" )
+                                            .executeTest()
+                                            .verifyErrorFree( 2 );
+
+        validator.getSurefireReportsXmlFile( "TEST-FirstTest.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+
+        validator.getSurefireReportsXmlFile( "TEST-SecondTest.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+    }
+
+    @Test
+    public void junit47InProcess()
+    {
+        SurefireLauncher launcher = unpack( "surefire-1364" );
+        OutputValidator validator = launcher.setForkJvm()
+                                            .activateProfile( "junit47" )
+                                            .forkMode( "never" )
+                                            .executeTest()
+                                            .verifyErrorFree( 2 );
+
+        validator.getSurefireReportsXmlFile( "TEST-FirstTest.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+
+        validator.getSurefireReportsXmlFile( "TEST-SecondTest.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+    }
+
+    @Test
+    public void junit47ForkedParallel()
+    {
+        SurefireLauncher launcher = unpack( "surefire-1364" );
+        OutputValidator validator = launcher.setForkJvm()
+                                            .activateProfile( "junit47" )
+                                            .forkMode( "once" )
+                                            .parallelClasses()
+                                            .threadCount( 2 )
+                                            .disablePerCoreThreadCount()
+                                            .executeTest()
+                                            .verifyErrorFree( 2 );
+
+        validator.getSurefireReportsXmlFile( "TEST-FirstTest.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+
+        validator.getSurefireReportsXmlFile( "TEST-SecondTest.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+    }
+
+    @Test
+    public void junit47InProcessParallel()
+    {
+        SurefireLauncher launcher = unpack( "surefire-1364" );
+        OutputValidator validator = launcher.setForkJvm()
+                                            .activateProfile( "junit47" )
+                                            .forkMode( "never" )
+                                            .parallelClasses()
+                                            .threadCount( 2 )
+                                            .disablePerCoreThreadCount()
+                                            .executeTest()
+                                            .verifyErrorFree( 2 );
+
+        validator.getSurefireReportsXmlFile( "TEST-FirstTest.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+
+        validator.getSurefireReportsXmlFile( "TEST-SecondTest.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+    }
+
+    @Test
+    public void testNg()
+    {
+        SurefireLauncher launcher = unpack( "surefire-1364" );
+        OutputValidator validator = launcher.setForkJvm()
+                                            .activateProfile( "testng" )
+                                            .forkMode( "once" )
+                                            .executeTest()
+                                            .verifyErrorFree( 3 );
+
+        validator.getSurefireReportsXmlFile( "TEST-TestSuite.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+    }
+
+    @Test
+    public void testNgInProcess()
+    {
+        SurefireLauncher launcher = unpack( "surefire-1364" );
+        OutputValidator validator = launcher.setForkJvm()
+                                            .activateProfile( "testng" )
+                                            .forkMode( "never" )
+                                            .executeTest()
+                                            .verifyErrorFree( 3 );
+
+        validator.getSurefireReportsXmlFile( "TEST-TestSuite.xml" )
+                .assertContainsText( "<property name=\"forkedProp\" value=\"forkedValue1\"/>" );
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1367AssumptionLogsIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1367AssumptionLogsIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1367AssumptionLogsIT.java
new file mode 100644
index 0000000..48564fb
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1367AssumptionLogsIT.java
@@ -0,0 +1,157 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.OutputValidator;
+import org.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.apache.maven.surefire.its.fixture.SurefireLauncher;
+import org.junit.Test;
+
+import static org.fest.assertions.Assertions.assertThat;
+
+/**
+ * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
+ * @see <a href="https://issues.apache.org/jira/browse/SUREFIRE-1367">SUREFIRE-1367</a>
+ * @since 2.20.1
+ */
+public class Surefire1367AssumptionLogsIT
+        extends SurefireJUnit4IntegrationTestCase
+{
+    private static final String NL = System.getProperty( "line.separator" );
+
+    @Test
+    public void shouldSeeLogsParallelForked()
+    {
+        OutputValidator outputValidator = unpack().setForkJvm()
+                                                  .forkMode( "once" )
+                                                  .parallelClassesAndMethods()
+                                                  .disablePerCoreThreadCount()
+                                                  .threadCountClasses( 2 )
+                                                  .threadCountMethods( 2 )
+                                                  .executeTest()
+                                                  .assertTestSuiteResults( 2, 0, 0, 2 );
+
+        verifyReportA( outputValidator );
+        verifyReportB( outputValidator );
+    }
+
+    @Test
+    public void shouldSeeLogsParallelInPlugin()
+    {
+        OutputValidator outputValidator = unpack().setForkJvm()
+                                                  .forkMode( "never" )
+                                                  .parallelClassesAndMethods()
+                                                  .disablePerCoreThreadCount()
+                                                  .threadCountClasses( 2 )
+                                                  .threadCountMethods( 2 )
+                                                  .executeTest()
+                                                  .assertTestSuiteResults( 2, 0, 0, 2 );
+
+        verifyReportA( outputValidator );
+        verifyReportB( outputValidator );
+    }
+
+    @Test
+    public void shouldSeeLogsForked()
+    {
+        OutputValidator outputValidator = unpack().setForkJvm()
+                                                  .forkMode( "once" )
+                                                  .executeTest()
+                                                  .assertTestSuiteResults( 2, 0, 0, 2 );
+
+        verifyReportA( outputValidator );
+        verifyReportB( outputValidator );
+    }
+
+    @Test
+    public void shouldSeeLogsInPlugin()
+    {
+        OutputValidator outputValidator = unpack().setForkJvm()
+                                                  .forkMode( "never" )
+                                                  .executeTest()
+                                                  .assertTestSuiteResults( 2, 0, 0, 2 );
+
+        verifyReportA( outputValidator );
+        verifyReportB( outputValidator );
+    }
+
+
+    private SurefireLauncher unpack()
+    {
+        return unpack( "/surefire-1367" );
+    }
+
+    private void verifyReportA( OutputValidator outputValidator )
+    {
+        String xmlReport = outputValidator.getSurefireReportsXmlFile( "TEST-ATest.xml" )
+                                   .readFileToString();
+
+        String outputCData = "<system-out><![CDATA[Hi" + NL +
+                                     NL +
+                                     "There!" + NL +
+                                     "]]></system-out>" + NL +
+                                     "    <system-err><![CDATA[Hello" + NL +
+                                     NL +
+                                     "What's up!" + NL +
+                                     "]]></system-err>";
+
+        assertThat( xmlReport )
+                .contains( outputCData );
+
+
+        String output = outputValidator.getSurefireReportsFile( "ATest-output.txt" )
+                                .readFileToString();
+
+        String outputExpected = "Hi" + NL +
+                                        NL +
+                                        "There!" + NL +
+                                        "Hello" + NL +
+                                        NL +
+                                        "What's up!" + NL;
+
+        assertThat( output )
+                .isEqualTo( outputExpected );
+    }
+
+    private void verifyReportB( OutputValidator outputValidator )
+    {
+        String xmlReport = outputValidator.getSurefireReportsXmlFile( "TEST-BTest.xml" )
+                                   .readFileToString();
+
+        String outputCData = "<system-out><![CDATA[Hey" + NL +
+                                     NL +
+                                     "you!" + NL +
+                                     "]]></system-out>";
+
+        assertThat( xmlReport )
+                .contains( outputCData );
+
+
+        String output = outputValidator.getSurefireReportsFile( "BTest-output.txt" )
+                                .readFileToString();
+
+        String outputExpected = "Hey" + NL +
+                                        NL +
+                                        "you!" + NL;
+
+        assertThat( output )
+                .isEqualTo( outputExpected );
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1396CustomProviderClassPathIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1396CustomProviderClassPathIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1396CustomProviderClassPathIT.java
new file mode 100644
index 0000000..4a27688
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1396CustomProviderClassPathIT.java
@@ -0,0 +1,52 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.it.VerificationException;
+import org.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author Jonathan Bell
+ */
+public class Surefire1396CustomProviderClassPathIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+    @BeforeClass
+    public static void installProvider()
+        throws VerificationException
+    {
+        unpack( Surefire1396CustomProviderClassPathIT.class, "surefire-1396-pluggableproviders-classpath-provider", "prov" ).executeInstall();
+    }
+    
+    @Test
+    public void pluggableProviderClasspathCorrect()
+        throws Exception
+    {
+        unpack( "surefire-1396-pluggableproviders-classpath" )
+            .setForkJvm()
+            .maven()
+            .showExceptionMessages()
+            .debugLogging()
+            .executeVerify()
+            .verifyErrorFreeLog();
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire141PluggableProvidersIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire141PluggableProvidersIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire141PluggableProvidersIT.java
new file mode 100644
index 0000000..b185217
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire141PluggableProvidersIT.java
@@ -0,0 +1,179 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.it.VerificationException;
+import org.apache.maven.surefire.its.fixture.OutputValidator;
+import org.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.apache.maven.surefire.its.fixture.SurefireVerifierException;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.FilenameFilter;
+
+import static org.fest.assertions.Assertions.assertThat;
+
+/**
+ * SUREFIRE-613 Asserts proper test counts when running in parallel
+ *
+ * @author Kristian Rosenvold
+ */
+public class Surefire141PluggableProvidersIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+    @BeforeClass
+    public static void installProvider()
+        throws VerificationException
+    {
+        unpack( Surefire141PluggableProvidersIT.class, "surefire-141-pluggableproviders-provider", "prov" )
+            .executeInstall();
+    }
+
+    @Test
+    public void pluggableProviderPresent()
+        throws Exception
+    {
+        unpack( "surefire-141-pluggableproviders" )
+            .setForkJvm()
+            .maven()
+            .showExceptionMessages()
+            .debugLogging()
+            .executeTest()
+            .verifyTextInLog( "Using configured provider org.apache.maven.surefire.testprovider.TestProvider" )
+            .verifyTextInLog( "Using configured provider org.apache.maven.surefire.junit.JUnit3Provider" )
+            .verifyErrorFreeLog();
+    }
+
+    @Test
+    public void invokeRuntimeException()
+        throws Exception
+    {
+        final String errorText = "Let's fail with a runtimeException";
+
+        OutputValidator validator = unpack( "surefire-141-pluggableproviders" )
+            .setForkJvm()
+            .sysProp( "invokeCrash", "runtimeException" )
+            .maven()
+            .withFailure()
+            .executeTest();
+
+        assertErrorMessage( validator, errorText );
+
+        boolean hasErrorInLog = verifiedErrorInLog( validator, "There was an error in the forked process" );
+        boolean verifiedInLog = verifiedErrorInLog( validator, errorText );
+        assertThat( hasErrorInLog && verifiedInLog )
+                .describedAs( "'" + errorText + "' could not be verified in log.txt nor *.dump file. ("
+                                      + hasErrorInLog + ", " + verifiedInLog + ")" )
+                .isTrue();
+    }
+
+    @Test
+    public void invokeReporterException()
+        throws Exception
+    {
+        final String errorText = "Let's fail with a reporterexception";
+
+        OutputValidator validator = unpack( "surefire-141-pluggableproviders" )
+            .setForkJvm()
+            .sysProp( "invokeCrash", "reporterException" )
+            .maven()
+            .withFailure()
+            .executeTest();
+
+        assertErrorMessage( validator, errorText );
+
+        boolean hasErrorInLog = verifiedErrorInLog( validator, "There was an error in the forked process" );
+        boolean verifiedInLog = verifiedErrorInLog( validator, errorText );
+        assertThat( hasErrorInLog && verifiedInLog )
+                .describedAs( "'" + errorText + "' could not be verified in log.txt nor *.dump file. ("
+                                      + hasErrorInLog + ", " + verifiedInLog + ")" )
+                .isTrue();
+    }
+
+    @Test
+    public void constructorRuntimeException()
+        throws Exception
+    {
+        final String errorText = "Let's fail with a runtimeException";
+
+        OutputValidator validator = unpack( "surefire-141-pluggableproviders" )
+                                            .setForkJvm()
+                                            .sysProp( "constructorCrash", "runtimeException" )
+                                            .maven()
+                                            .withFailure()
+                                            .executeTest();
+
+        assertErrorMessage( validator, errorText );
+
+        boolean hasErrorInLog = verifiedErrorInLog( validator, "There was an error in the forked process" );
+        boolean verifiedInLog = verifiedErrorInLog( validator, errorText );
+        assertThat( hasErrorInLog && verifiedInLog )
+                .describedAs( "'" + errorText + "' could not be verified in log.txt nor *.dump file. ("
+                                      + hasErrorInLog + ", " + verifiedInLog + ")" )
+                .isTrue();
+    }
+
+    private static void assertErrorMessage( OutputValidator validator, String message )
+    {
+        File reportDir = validator.getSurefireReportsDirectory();
+        String[] dumpFiles = reportDir.list( new FilenameFilter()
+                                             {
+                                                 @Override
+                                                 public boolean accept( File dir, String name )
+                                                 {
+                                                     return name.endsWith( ".dump" );
+                                                 }
+                                             });
+        assertThat( dumpFiles ).isNotEmpty();
+        for ( String dump : dumpFiles )
+        {
+            validator.getSurefireReportsFile( dump )
+                    .assertContainsText( message );
+        }
+    }
+
+    private static boolean verifiedErrorInLog( OutputValidator validator, String errorText )
+    {
+        try
+        {
+            validator.verifyTextInLog( errorText );
+            return  true;
+        }
+        catch ( SurefireVerifierException e )
+        {
+            return false;
+        }
+    }
+
+    private static boolean verifiedErrorInDump( OutputValidator validator, String errorText )
+    {
+        try
+        {
+            assertErrorMessage( validator, errorText );
+            return true;
+        }
+        catch ( AssertionError e )
+        {
+            return false;
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire146ForkPerTestNoSetupIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire146ForkPerTestNoSetupIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire146ForkPerTestNoSetupIT.java
new file mode 100644
index 0000000..7e50f25
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire146ForkPerTestNoSetupIT.java
@@ -0,0 +1,38 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.junit.Test;
+
+/**
+ * Test Surefire-146 (forkMode=pertest fails to call setUp)
+ *
+ * @author <a href="mailto:dfabulich@apache.org">Dan Fabulich</a>
+ */
+public class Surefire146ForkPerTestNoSetupIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+    @Test
+    public void testForkPerTestNoSetup()
+    {
+        executeErrorFreeTest( "surefire-146-forkPerTestNoSetup", 1 );
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire162CharsetProviderIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire162CharsetProviderIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire162CharsetProviderIT.java
new file mode 100644
index 0000000..e13483a
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire162CharsetProviderIT.java
@@ -0,0 +1,51 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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 java.io.File;
+
+import org.apache.maven.surefire.its.fixture.*;
+import org.codehaus.plexus.util.FileUtils;
+import org.junit.Test;
+
+/**
+ * Test charset provider (SUREFIRE-162)
+ *
+ * @author <a href="mailto:dfabulich@apache.org">Dan Fabulich</a>
+ */
+public class Surefire162CharsetProviderIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+    @SuppressWarnings( { "ResultOfMethodCallIgnored" } )
+    @Test
+    public void testCharsetProvider()
+        throws Exception
+    {
+        SurefireLauncher unpack = unpack( "/surefire-162-charsetProvider" );
+        MavenLauncher maven = unpack.maven();
+        OutputValidator verifier = maven.getValidator();
+        File jarFile = maven.getArtifactPath( "jcharset", "jcharset", "1.2.1", "jar" );
+        File pomFile = maven.getArtifactPath( "jcharset", "jcharset", "1.2.1", "pom" );
+        jarFile.getParentFile().mkdirs();
+        FileUtils.copyFile( verifier.getSubFile( "repo/jcharset/jcharset/1.2.1/jcharset-1.2.1.jar" ), jarFile );
+        FileUtils.copyFile( verifier.getSubFile( "repo/jcharset/jcharset/1.2.1/jcharset-1.2.1.pom" ), pomFile );
+        unpack.executeTest().verifyErrorFree( 1 );
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire224WellFormedXmlFailuresIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire224WellFormedXmlFailuresIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire224WellFormedXmlFailuresIT.java
new file mode 100644
index 0000000..1bdb3cb
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire224WellFormedXmlFailuresIT.java
@@ -0,0 +1,78 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.plugins.surefire.report.ReportTestCase;
+import org.apache.maven.plugins.surefire.report.ReportTestSuite;
+import org.apache.maven.surefire.its.fixture.HelperAssertions;
+import org.apache.maven.surefire.its.fixture.OutputValidator;
+import org.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.junit.Test;
+
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Test Surefire-224 (XML test reports are not well-formed when failure message contains quotes)
+ *
+ * @author <a href="mailto:dfabulich@apache.org">Dan Fabulich</a>
+ */
+public class Surefire224WellFormedXmlFailuresIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+    @SuppressWarnings("ConstantConditions")
+    @Test
+    public void testWellFormedXmlFailures()
+    {
+        OutputValidator outputValidator = unpack( "/surefire-224-wellFormedXmlFailures" ).executeTest();
+
+        outputValidator.assertTestSuiteResults( 4, 0, 4, 0 );
+
+        ReportTestSuite suite = HelperAssertions.extractReports( outputValidator.getBaseDir() ).get( 0 );
+        List<org.apache.maven.plugins.surefire.report.ReportTestCase> testCases = suite.getTestCases();
+        assertEquals( "Wrong number of test case objects", 4, testCases.size() );
+        ReportTestCase testQuote = null, testLower = null, testGreater = null, testU0000 = null;
+        for ( ReportTestCase current : testCases )
+        {
+            if ( "testQuote".equals( current.getName() ) )
+            {
+                testQuote = current;
+            }
+            else if ( "testLower".equals( current.getName() ) )
+            {
+                testLower = current;
+            }
+            else if ( "testGreater".equals( current.getName() ) )
+            {
+                testGreater = current;
+            }
+            else if ( "testU0000".equals( current.getName() ) )
+            {
+                testU0000 = current;
+            }
+        }
+        assertEquals( "Wrong error message", "\"", testQuote.getFailureMessage() );
+        assertEquals( "Wrong error message", "<", testLower.getFailureMessage() );
+        assertEquals( "Wrong error message", ">", testGreater.getFailureMessage() );
+        // SUREFIRE-456 we have to doubly-escape non-visible control characters like \u0000
+        assertEquals( "Wrong error message", "&#0;", testU0000.getFailureMessage() );
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire257NotRerunningTestsIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire257NotRerunningTestsIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire257NotRerunningTestsIT.java
new file mode 100644
index 0000000..2796b92
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire257NotRerunningTestsIT.java
@@ -0,0 +1,41 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.junit.Test;
+
+/**
+ * Test Surefire-257 Verifies that surefire does not re-run tests in site build
+ *
+ * @author Kristian Rosenvold
+ */
+public class Surefire257NotRerunningTestsIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+    @Test
+    public void shouldNotRerun()
+        throws Exception
+    {
+        unpack(
+            "/surefire-257-rerunningTests" ).addSurefireReportGoal().addSurefireReportGoal().executeCurrentGoals().verifyTextInLog(
+            "Skipping execution of surefire because it has already been run for this configuration" );
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire260TestWithIdenticalNamesIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire260TestWithIdenticalNamesIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire260TestWithIdenticalNamesIT.java
new file mode 100644
index 0000000..aab3380
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire260TestWithIdenticalNamesIT.java
@@ -0,0 +1,72 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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 java.io.IOException;
+import java.net.URI;
+
+import org.apache.maven.surefire.its.fixture.*;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlDivision;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Test Surefire-570 Multiple report directories
+ *
+ * @author Kristian Rosenvold
+ */
+public class Surefire260TestWithIdenticalNamesIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+
+    @Test
+    public void testWithIdenticalNames()
+        throws IOException
+    {
+        SurefireLauncher surefireLauncher = unpack( "surefire-260-testWithIdenticalNames" ).failNever();
+        surefireLauncher.executeTest();
+        surefireLauncher.reset();
+        OutputValidator validator = surefireLauncher.addSurefireReportGoal().executeCurrentGoals();
+
+        TestFile siteFile = validator.getSiteFile( "surefire-report.html" );
+        final URI uri = siteFile.toURI();
+
+        final WebClient webClient = new WebClient();
+        webClient.setJavaScriptEnabled( true );
+        final HtmlPage page = webClient.getPage( uri.toURL() );
+
+        final HtmlAnchor a =
+            (HtmlAnchor) page.getByXPath( "//a[@href = \"javascript:toggleDisplay('surefire260.TestB.testDup');\"]" )
+                    .get( 0 );
+        final HtmlDivision content = (HtmlDivision) page.getElementById( "surefire260.TestB.testDup-failure" );
+        assertNotNull( content );
+        assertTrue( content.getAttribute( "style" ).contains( "none" ) );
+        a.click();
+        assertFalse( content.getAttribute( "style" ).contains( "none" ) );
+        webClient.closeAllWindows();
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire34SecurityManagerIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire34SecurityManagerIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire34SecurityManagerIT.java
new file mode 100644
index 0000000..bb80aec
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire34SecurityManagerIT.java
@@ -0,0 +1,48 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.apache.maven.surefire.its.fixture.SurefireLauncher;
+import org.junit.Test;
+
+/**
+ * SUREFIRE-621 Asserts proper test counts when running junit 3 tests in parallel
+ *
+ * @author Kristian Rosenvold
+ */
+public class Surefire34SecurityManagerIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+    @Test
+    public void testSecurityManager()
+    {
+        SurefireLauncher surefireLauncher = unpack( "surefire-34-securityManager" ).failNever();
+        surefireLauncher.executeTest().assertTestSuiteResults( 2, 1, 0, 0 );
+    }
+
+    @Test
+    public void testSecurityManagerSuccessful()
+    {
+        SurefireLauncher surefireLauncher = unpack( "surefire-34-securityManager-success" );
+        surefireLauncher.executeTest().assertTestSuiteResults( 2, 0, 0, 0 );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire376TestNgAfterSuiteFailureIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire376TestNgAfterSuiteFailureIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire376TestNgAfterSuiteFailureIT.java
new file mode 100644
index 0000000..ebc0e1e
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire376TestNgAfterSuiteFailureIT.java
@@ -0,0 +1,44 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.junit.Test;
+
+/**
+ * Test Surefire-376 (TestNG @AfterSuite failures are ignored)
+ *
+ * @author <a href="mailto:dfabulich@apache.org">Dan Fabulich</a>
+ */
+public class Surefire376TestNgAfterSuiteFailureIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+    @Test
+    public void testAfterSuiteFailure()
+    {
+        unpack( "/testng-afterSuiteFailure" )
+                .maven()
+                .sysProp( "testNgVersion", "5.7" )
+                .sysProp( "testNgClassifier", "jdk15" )
+                .withFailure()
+                .executeTest()
+                .assertTestSuiteResults( 2, 0, 1, 0 );
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire377TestNgAndJUnitTogetherIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire377TestNgAndJUnitTogetherIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire377TestNgAndJUnitTogetherIT.java
new file mode 100644
index 0000000..a29d030
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire377TestNgAndJUnitTogetherIT.java
@@ -0,0 +1,52 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.junit.Test;
+
+/**
+ * SUREFIRE-377 (When JUnit and TestNG tests are in same project, only one set gets run).
+ *
+ * @author <a href="mailto:dfabulich@apache.org">Dan Fabulich</a>
+ */
+public class Surefire377TestNgAndJUnitTogetherIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+    @Test
+    public void testTestNgAndJUnitTogether()
+    {
+        unpack( "/testng-junit-together" )
+                .sysProp( "testNgVersion", "5.7" )
+                .sysProp( "testNgClassifier", "jdk15" )
+                .executeTest()
+                .verifyErrorFree( 2 );
+    }
+
+    @Test
+    public void testTestNgAndJUnit4Together()
+    {
+        unpack( "/testng-junit4-together" )
+                .sysProp( "testNgVersion", "5.7" )
+                .sysProp( "testNgClassifier", "jdk15" )
+                .executeTest()
+                .verifyErrorFree( 3 );
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire408ManualProviderSelectionIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire408ManualProviderSelectionIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire408ManualProviderSelectionIT.java
new file mode 100644
index 0000000..3287ab4
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire408ManualProviderSelectionIT.java
@@ -0,0 +1,42 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.junit.Test;
+
+/**
+ * SUREFIRE-613 Asserts proper test counts when running in parallel
+ *
+ * @author Kristian Rosenvold
+ */
+public class Surefire408ManualProviderSelectionIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+    @Test
+    public void testParallelBuildResultCount()
+    {
+        unpack( "/surefire-408-manual-provider-selection" )
+            .showErrorStackTraces()
+            .debugLogging()
+            .executeTest()
+            .verifyTextInLog( "Using configured provider org.apache.maven.surefire.junit.JUnit3Provider" );
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire42NotExtendingTestCaseIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire42NotExtendingTestCaseIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire42NotExtendingTestCaseIT.java
new file mode 100644
index 0000000..00c2aee
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire42NotExtendingTestCaseIT.java
@@ -0,0 +1,38 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.junit.Test;
+
+/**
+ * Test JUnit test that contains inner classes
+ *
+ * @author <a href="mailto:dfabulich@apache.org">Dan Fabulich</a>
+ */
+public class Surefire42NotExtendingTestCaseIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+    @Test
+    public void testInnerClass()
+    {
+        executeErrorFreeTest( "junit-notExtendingTestCase", 1 );
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire44InnerClassTestIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire44InnerClassTestIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire44InnerClassTestIT.java
new file mode 100644
index 0000000..928019a
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire44InnerClassTestIT.java
@@ -0,0 +1,38 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.junit.Test;
+
+/**
+ * Test JUnit test that contains inner classes
+ *
+ * @author <a href="mailto:dfabulich@apache.org">Dan Fabulich</a>
+ */
+public class Surefire44InnerClassTestIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+    @Test
+    public void testInnerClass()
+    {
+        executeErrorFreeTest( "/junit-innerClass", 1 );
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire500PuzzlingErrorIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire500PuzzlingErrorIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire500PuzzlingErrorIT.java
new file mode 100644
index 0000000..9356f68
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire500PuzzlingErrorIT.java
@@ -0,0 +1,42 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.OutputValidator;
+import org.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.apache.maven.surefire.its.fixture.TestFile;
+import org.junit.Test;
+
+/**
+ * SUREFIRE-500 Asserts correct error handling for the "odd" surefire-500 (and 625) issues.
+ *
+ * @author Kristian Rosenvold
+ */
+public class Surefire500PuzzlingErrorIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+    @Test
+    public void testBuildFailingWhenErrors()
+    {
+        OutputValidator outputValidator = unpack( "/surefire-500-puzzling-error" ).failNever().executeTest();
+        TestFile surefireReportsFile = outputValidator.getSurefireReportsFile( "surefire500.ExplodingTest.txt" );
+        surefireReportsFile.assertContainsText( "java.lang.NoClassDefFoundError: whoops!" );
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire510TestClassPathForkModesIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire510TestClassPathForkModesIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire510TestClassPathForkModesIT.java
new file mode 100644
index 0000000..4e4fd13
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire510TestClassPathForkModesIT.java
@@ -0,0 +1,53 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.apache.maven.surefire.its.fixture.SurefireLauncher;
+import org.junit.Test;
+
+/**
+ * SUREFIRE-621 Asserts proper test counts when running junit 3 tests in parallel
+ *
+ * @author Kristian Rosenvold
+ */
+public class Surefire510TestClassPathForkModesIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+
+    @Test
+    public void testForkAlways()
+    {
+        unpack().forkAlways().executeTest().
+            verifyTextInLog( "tcp is set" );
+    }
+
+    @Test
+    public void testForkOnce()
+    {
+        unpack().forkOnce().executeTest().
+            verifyTextInLog( "tcp is set" );
+    }
+
+    public SurefireLauncher unpack()
+    {
+        return unpack( "/surefire-510-testClassPath" );
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire569RunTestFromDependencyJarsIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire569RunTestFromDependencyJarsIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire569RunTestFromDependencyJarsIT.java
new file mode 100644
index 0000000..3e53cca
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire569RunTestFromDependencyJarsIT.java
@@ -0,0 +1,44 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.OutputValidator;
+import org.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.apache.maven.surefire.its.fixture.SurefireLauncher;
+import org.junit.Test;
+
+/**
+ * SUREFIRE-569 Add support for scanning Dependencies for TestClasses
+ *
+ * @author Aslak Knutsen
+ */
+public class Surefire569RunTestFromDependencyJarsIT
+	extends	SurefireJUnit4IntegrationTestCase {
+
+	@Test
+	public void shouldScanAndRunTestsInDependencyJars() throws Exception {
+		SurefireLauncher launcher = unpack( "surefire-569-RunTestFromDependencyJars" );
+		launcher.addGoal("test").addGoal("install");
+		launcher.executeCurrentGoals();
+
+		OutputValidator module1 = launcher.getSubProjectValidator("module1");
+		module1.assertTestSuiteResults(1, 0, 0, 0);
+	}
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire570MultipleReportDirectoriesIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire570MultipleReportDirectoriesIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire570MultipleReportDirectoriesIT.java
new file mode 100644
index 0000000..a9b437e
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire570MultipleReportDirectoriesIT.java
@@ -0,0 +1,68 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.*;
+import org.junit.Test;
+
+/**
+ * Test Surefire-570 Multiple report directories
+ *
+ * @author Kristian Rosenvold
+ */
+public class Surefire570MultipleReportDirectoriesIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+
+    @Test
+    public void testReportWithAggregate()
+        throws Exception
+    {
+
+        SurefireLauncher surefireLauncher = unpack().failNever();
+        surefireLauncher.executeTest();
+        surefireLauncher.addGoal( "-Daggregate=true" );
+        OutputValidator validator = surefireLauncher.executeSurefireReport( );
+        TestFile siteFile = validator.getSiteFile( "surefire-report.html" );
+        siteFile.assertContainsText( "MyModule1ClassTest" );
+        siteFile.assertContainsText( "MyModule2ClassTest" );
+        siteFile.assertContainsText( "MyDummyClassM1Test" );
+    }
+
+    @Test
+    public void testReportWithoutAggregate()
+        throws Exception
+    {
+        SurefireLauncher surefireLauncher = unpack().failNever();
+        surefireLauncher.executeTest();
+        surefireLauncher.reset();
+        surefireLauncher.executeSurefireReport( );
+        OutputValidator module1 = surefireLauncher.getSubProjectValidator( "module1" );
+        TestFile siteFile = module1.getSiteFile( "surefire-report.html" );
+        siteFile.assertContainsText( "MyModule1ClassTest" );
+        siteFile.assertContainsText( "MyDummyClassM1Test" );
+    }
+
+    public SurefireLauncher unpack()
+    {
+        return unpack( "/surefire-570-multipleReportDirectories" );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/09f0eef8/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire613TestCountInParallelIT.java
----------------------------------------------------------------------
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire613TestCountInParallelIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire613TestCountInParallelIT.java
new file mode 100644
index 0000000..7b74409
--- /dev/null
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire613TestCountInParallelIT.java
@@ -0,0 +1,45 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * 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.apache.maven.surefire.its.fixture.OutputValidator;
+import org.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.junit.Test;
+
+/**
+ * SUREFIRE-613 Asserts proper test counts when running in parallel
+ *
+ * @author Kristian Rosenvold
+ */
+public class Surefire613TestCountInParallelIT
+    extends SurefireJUnit4IntegrationTestCase
+{
+    @Test
+    public void testParallelBuildResultCount()
+    {
+        OutputValidator validator = unpack( "/surefire-613-testCount-in-parallel" ).failNever().executeTest();
+
+        validator.verifyTextInLog( "testAllok to stdout" );
+        validator.verifyTextInLog( "testAllok to stderr" );
+        validator.verifyTextInLog( "testWithException1 to stdout" );
+        validator.verifyTextInLog( "testWithException1 to stderr" );
+        validator.assertTestSuiteResults( 30, 8, 4, 17 );
+    }
+}