You are viewing a plain text version of this content. The canonical link for it is here.
Posted to surefire-commits@maven.apache.org by kr...@apache.org on 2011/04/27 23:20:16 UTC

svn commit: r1097246 [5/5] - in /maven/surefire/trunk: maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/ maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/ maven-surefire-common/src/main/java/org/apache/maven/plug...

Added: maven/surefire/trunk/surefire-integration-tests/src/test/resources/failsafe-buildfail/pom.xml
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/failsafe-buildfail/pom.xml?rev=1097246&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/failsafe-buildfail/pom.xml (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/failsafe-buildfail/pom.xml Wed Apr 27 21:20:12 2011
@@ -0,0 +1,83 @@
+<?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/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>localhost</groupId>
+  <artifactId>working-directory-test</artifactId>
+  <version>1.0</version>
+  <name>Run tests multiple times</name>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.2</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-failsafe-plugin</artifactId>
+        <version>${surefire.version}</version>
+        <executions>
+            <execution>
+                <id>integration-test</id>
+                <goals>
+                    <goal>integration-test</goal>
+                </goals>
+                <configuration>
+                    <summaryFile>${project.build.directory}/failsafe-reports/failsafe-summary-1.xml</summaryFile>
+                </configuration>
+            </execution>
+            <execution>
+                <id>acceptance-test</id>
+                <goals>
+                    <goal>integration-test</goal>
+                </goals>
+                <configuration>
+                    <includes>
+                        <include>**/AT*.java</include>
+                        <include>**/*AT.java</include>
+                        <include>**/*ATCase.java</include>
+                    </includes>
+                    <summaryFile>${project.build.directory}/failsafe-reports/failsafe-summary-2.xml</summaryFile>
+                </configuration>
+            </execution>
+            <execution>
+                <id>verify</id>
+                <goals>
+                    <goal>verify</goal>
+                </goals>
+                <configuration>
+                    <summaryFiles>
+                        <summaryFile>${project.build.directory}/failsafe-reports/failsafe-summary-1.xml</summaryFile>
+                        <summaryFile>${project.build.directory}/failsafe-reports/failsafe-summary-2.xml</summaryFile>
+                    </summaryFiles>
+                </configuration>
+            </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>

Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/failsafe-buildfail/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: maven/surefire/trunk/surefire-integration-tests/src/test/resources/failsafe-buildfail/src/test/java/MyAT.java (from r1097226, maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/Surefire.java)
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/failsafe-buildfail/src/test/java/MyAT.java?p2=maven/surefire/trunk/surefire-integration-tests/src/test/resources/failsafe-buildfail/src/test/java/MyAT.java&p1=maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/Surefire.java&r1=1097226&r2=1097246&rev=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/Surefire.java (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/failsafe-buildfail/src/test/java/MyAT.java Wed Apr 27 21:20:12 2011
@@ -1,5 +1,3 @@
-package org.apache.maven.surefire;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -9,7 +7,7 @@ package org.apache.maven.surefire;
  * "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
+ *   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
@@ -18,13 +16,10 @@ package org.apache.maven.surefire;
  * specific language governing permissions and limitations
  * under the License.
  */
+import junit.framework.TestCase;
 
-/**
- * @author Jason van Zyl
- * @version $Id$
- */
-public class Surefire
-{
-    // todo: Move for 2.7.1
-    public static final String SUREFIRE_BUNDLE_NAME = "org.apache.maven.surefire.surefire";
+public class MyAT extends TestCase {
+    public void testSomething() {
+        assertTrue(false);
+    }
 }

Copied: maven/surefire/trunk/surefire-integration-tests/src/test/resources/failsafe-buildfail/src/test/java/MyIT.java (from r1097226, maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/Surefire.java)
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/failsafe-buildfail/src/test/java/MyIT.java?p2=maven/surefire/trunk/surefire-integration-tests/src/test/resources/failsafe-buildfail/src/test/java/MyIT.java&p1=maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/Surefire.java&r1=1097226&r2=1097246&rev=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/Surefire.java (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/failsafe-buildfail/src/test/java/MyIT.java Wed Apr 27 21:20:12 2011
@@ -1,5 +1,3 @@
-package org.apache.maven.surefire;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -9,7 +7,7 @@ package org.apache.maven.surefire;
  * "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
+ *   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
@@ -19,12 +17,10 @@ package org.apache.maven.surefire;
  * under the License.
  */
 
-/**
- * @author Jason van Zyl
- * @version $Id$
- */
-public class Surefire
-{
-    // todo: Move for 2.7.1
-    public static final String SUREFIRE_BUNDLE_NAME = "org.apache.maven.surefire.surefire";
+import junit.framework.TestCase;
+
+public class MyIT extends TestCase {
+    public void testSomething() {
+        assertTrue(true);
+    }
 }

Modified: maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutput/pom.xml
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutput/pom.xml?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutput/pom.xml (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutput/pom.xml Wed Apr 27 21:20:12 2011
@@ -33,6 +33,7 @@
              <forkMode>${forkMode}</forkMode>
              <printSummary>${printSummary}</printSummary>
              <useFile>true</useFile>
+             <reportFormat>${reportFormat}</reportFormat>
              <redirectTestOutputToFile>${redirect.to.file}</redirectTestOutputToFile>
              <includes>
                 <include>**/Test*.java</include>
@@ -48,6 +49,7 @@
       <redirect.to.file>true</redirect.to.file>
       <forkMode>once</forkMode>
       <printSummary>true</printSummary>
+      <reportFormat>brief</reportFormat>
     </properties>
 
 </project>

Copied: maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/pom.xml (from r1097226, maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutput/pom.xml)
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/pom.xml?p2=maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/pom.xml&p1=maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutput/pom.xml&r1=1097226&r2=1097246&rev=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutput/pom.xml (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/pom.xml Wed Apr 27 21:20:12 2011
@@ -32,8 +32,9 @@
            <configuration>
              <forkMode>${forkMode}</forkMode>
              <printSummary>${printSummary}</printSummary>
-             <useFile>true</useFile>
-             <redirectTestOutputToFile>${redirect.to.file}</redirectTestOutputToFile>
+             <useFile>${userFile}</useFile>
+             <reportFormat>${reportFormat}</reportFormat>
+              <redirectTestOutputToFile>${redirect.to.file}</redirectTestOutputToFile>
              <includes>
                 <include>**/Test*.java</include>
              </includes>
@@ -48,6 +49,8 @@
       <redirect.to.file>true</redirect.to.file>
       <forkMode>once</forkMode>
       <printSummary>true</printSummary>
+      <useFile>true</useFile>
+      <reportFormat>brief</reportFormat>
     </properties>
 
 </project>

Copied: maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/java/forkConsoleOutput/Test1.java (from r1097226, maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/NullOutputConsumer.java)
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/java/forkConsoleOutput/Test1.java?p2=maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/java/forkConsoleOutput/Test1.java&p1=maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/NullOutputConsumer.java&r1=1097226&r2=1097246&rev=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/NullOutputConsumer.java (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/java/forkConsoleOutput/Test1.java Wed Apr 27 21:20:12 2011
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.surefire.booterclient.output;
+package forkConsoleOutput;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,34 +19,25 @@ package org.apache.maven.plugin.surefire
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReportEntry;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
 
-/**
- * @author Kristian Rosenvold
- */
-public class NullOutputConsumer implements OutputConsumer
+public class Test1
 {
-    public void consumeHeaderLine( String line )
-    {
-    }
-
-    public void consumeMessageLine( String line )
-    {
-    }
-
-    public void consumeFooterLine( String line )
-    {
-    }
-
-    public void consumeOutputLine( String line )
-    {
+    @Test
+    public void test6281() {
+        System.out.println( "Test1 on" + Thread.currentThread().getName());
     }
 
-    public void testSetStarting( ReportEntry reportEntry )
-    {
+    @BeforeClass
+    public static void testWithFailingAssumption2() {
+        System.out.println( "BeforeTest1 on" + Thread.currentThread().getName());
+    }
+    
+    @AfterClass
+    public static void testWithFailingAssumption3() {
+        System.out.println( "AfterTest1 on" + Thread.currentThread().getName());
     }
 
-    public void testSetCompleted()
-    {
-    }
 }

Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/java/forkConsoleOutput/Test1.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/java/forkConsoleOutput/Test2.java (from r1097226, maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/Surefire.java)
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/java/forkConsoleOutput/Test2.java?p2=maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/java/forkConsoleOutput/Test2.java&p1=maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/Surefire.java&r1=1097226&r2=1097246&rev=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/Surefire.java (original)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/java/forkConsoleOutput/Test2.java Wed Apr 27 21:20:12 2011
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire;
+package forkConsoleOutput;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,12 +19,14 @@ package org.apache.maven.surefire;
  * under the License.
  */
 
-/**
- * @author Jason van Zyl
- * @version $Id$
- */
-public class Surefire
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class Test2
 {
-    // todo: Move for 2.7.1
-    public static final String SUREFIRE_BUNDLE_NAME = "org.apache.maven.surefire.surefire";
+    @Test
+    public void test6281() {
+        throw new  RuntimeException("FailHere");
+    }
 }

Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/java/forkConsoleOutput/Test2.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/java/forkConsoleOutput/Test2.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/surefire/trunk/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/junit4/MockReporter.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/junit4/MockReporter.java?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/junit4/MockReporter.java (original)
+++ maven/surefire/trunk/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/junit4/MockReporter.java Wed Apr 27 21:20:12 2011
@@ -24,19 +24,16 @@ import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.maven.surefire.report.ReportEntry;
 import org.apache.maven.surefire.report.ReporterConfiguration;
-import org.apache.maven.surefire.report.ReporterException;
 import org.apache.maven.surefire.report.RunListener;
 
-/** Internal use only */
+/**
+ * Internal use only
+ */
 public class MockReporter
     implements RunListener
 {
     private final List<String> events = new ArrayList<String>();
 
-    public static final String RUN_STARTED = "RUN_STARTED";
-
-    public static final String RUN_COMPLETED = "RUN_COMPLETED";
-
     public static final String SET_STARTED = "SET_STARTED";
 
     public static final String SET_COMPLETED = "SET_COMPLETED";
@@ -68,24 +65,12 @@ public class MockReporter
 
     }
 
-    public void runStarting()
-    {
-        events.add( RUN_STARTED );
-    }
-
-    public void runCompleted()
-    {
-        events.add( RUN_COMPLETED );
-    }
-
     public void testSetStarting( ReportEntry report )
-        throws ReporterException
     {
         events.add( SET_STARTED );
     }
 
     public void testSetCompleted( ReportEntry report )
-        throws ReporterException
     {
         events.add( SET_COMPLETED );
     }
@@ -153,4 +138,8 @@ public class MockReporter
     public void testAssumptionFailure( ReportEntry report )
     {
     }
+
+    public void writeTestOutput( String output, boolean stdout )
+    {
+    }
 }

Modified: maven/surefire/trunk/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java Wed Apr 27 21:20:12 2011
@@ -19,25 +19,25 @@ package org.apache.maven.surefire.junit;
  * under the License.
  */
 
+import java.util.Iterator;
 import org.apache.maven.surefire.common.junit3.JUnit3Reflector;
 import org.apache.maven.surefire.common.junit3.JUnit3TestChecker;
 import org.apache.maven.surefire.providerapi.AbstractProvider;
 import org.apache.maven.surefire.providerapi.ProviderParameters;
-import org.apache.maven.surefire.report.RunListener;
+import org.apache.maven.surefire.report.ConsoleOutputCapture;
+import org.apache.maven.surefire.report.ConsoleOutputReceiver;
 import org.apache.maven.surefire.report.ReportEntry;
 import org.apache.maven.surefire.report.ReporterException;
 import org.apache.maven.surefire.report.ReporterFactory;
+import org.apache.maven.surefire.report.RunListener;
 import org.apache.maven.surefire.report.SimpleReportEntry;
 import org.apache.maven.surefire.suite.RunResult;
 import org.apache.maven.surefire.testset.TestSetFailedException;
 import org.apache.maven.surefire.util.DirectoryScanner;
 import org.apache.maven.surefire.util.TestsToRun;
 
-import java.util.Iterator;
-
 /**
  * @author Kristian Rosenvold
- * @noinspection UnusedDeclaration
  */
 public class JUnit3Provider
     extends AbstractProvider
@@ -75,8 +75,8 @@ public class JUnit3Provider
         }
 
         ReporterFactory reporterFactory = providerParameters.getReporterFactory();
-
-        RunListener reporter = reporterFactory.createReporter();
+        final RunListener reporter = reporterFactory.createReporter();
+        ConsoleOutputCapture.startCapture( (ConsoleOutputReceiver) reporter );
 
         for ( Iterator iter = testsToRun.iterator(); iter.hasNext(); )
         {

Modified: maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java Wed Apr 27 21:20:12 2011
@@ -19,17 +19,20 @@ package org.apache.maven.surefire.junit4
  * under the License.
  */
 
-import org.apache.maven.surefire.Surefire;
+import java.util.Iterator;
+import java.util.List;
 import org.apache.maven.surefire.common.junit4.JUnit4RunListener;
 import org.apache.maven.surefire.common.junit4.JUnit4RunListenerFactory;
 import org.apache.maven.surefire.common.junit4.JUnit4TestChecker;
 import org.apache.maven.surefire.providerapi.AbstractProvider;
 import org.apache.maven.surefire.providerapi.ProviderParameters;
+import org.apache.maven.surefire.report.ConsoleOutputCapture;
+import org.apache.maven.surefire.report.ConsoleOutputReceiver;
 import org.apache.maven.surefire.report.PojoStackTraceWriter;
-import org.apache.maven.surefire.report.RunListener;
 import org.apache.maven.surefire.report.ReportEntry;
 import org.apache.maven.surefire.report.ReporterException;
 import org.apache.maven.surefire.report.ReporterFactory;
+import org.apache.maven.surefire.report.RunListener;
 import org.apache.maven.surefire.report.SimpleReportEntry;
 import org.apache.maven.surefire.suite.RunResult;
 import org.apache.maven.surefire.testset.TestSetFailedException;
@@ -39,20 +42,12 @@ import org.apache.maven.surefire.util.Te
 
 import org.junit.runner.notification.RunNotifier;
 
-import java.util.Iterator;
-import java.util.List;
-import java.util.ResourceBundle;
-
-
 /**
  * @author Kristian Rosenvold
  */
-@SuppressWarnings( { "UnusedDeclaration" } )
-public class JUnit4Provider extends AbstractProvider
+public class JUnit4Provider
+    extends AbstractProvider
 {
-
-    private static ResourceBundle bundle = ResourceBundle.getBundle( Surefire.SUREFIRE_BUNDLE_NAME );
-
     private final ClassLoader testClassLoader;
 
     private final DirectoryScanner directoryScanner;
@@ -60,7 +55,7 @@ public class JUnit4Provider extends Abst
     private final List<org.junit.runner.notification.RunListener> customRunListeners;
 
     private final JUnit4TestChecker jUnit4TestChecker;
-    
+
     private final String requestedTestMethod;
 
     private TestsToRun testsToRun;
@@ -79,10 +74,10 @@ public class JUnit4Provider extends Abst
 
     }
 
-    @SuppressWarnings( { "UnnecessaryUnboxing" } )
     public RunResult invoke( Object forkTestSet )
         throws TestSetFailedException, ReporterException
     {
+        long start = System.currentTimeMillis();
         if ( testsToRun == null )
         {
             testsToRun = forkTestSet == null ? scanClassPath() : TestsToRun.fromClass( (Class) forkTestSet );
@@ -92,22 +87,32 @@ public class JUnit4Provider extends Abst
 
         final ReporterFactory reporterFactory = providerParameters.getReporterFactory();
 
-        RunListener reporter = reporterFactory.createReporter();
-        JUnit4RunListener jUnit4TestSetReporter = new JUnit4RunListener( reporter );
+        final RunListener reporter = reporterFactory.createReporter();
+        //final AsynchRunListener asynchRunListener = new AsynchRunListener( reporter , "JUnitProvider");
+        final RunListener asynchRunListener = reporter;
+
+        ConsoleOutputCapture.startCapture( (ConsoleOutputReceiver) asynchRunListener );
+
+        JUnit4RunListener jUnit4TestSetReporter = new JUnit4RunListener( asynchRunListener );
+
         RunNotifier runNotifer = getRunNotifer( jUnit4TestSetReporter, customRunListeners );
 
         for ( Class clazz : testsToRun.getLocatedClasses() )
         {
-            executeTestSet( clazz, reporter, testClassLoader, runNotifer );
+            executeTestSet( clazz, reporter, runNotifer );
         }
 
         closeRunNotifer( jUnit4TestSetReporter, customRunListeners );
 
-        return reporterFactory.close();
+        ConsoleOutputReceiver consoleOutputReceiver = (ConsoleOutputReceiver) reporter;
+        final String s = "Done after " + ( System.currentTimeMillis() - start );
+        consoleOutputReceiver.writeTestOutput( s.getBytes(), 0, s.getBytes().length, true );
 
+        //asynchRunListener.close();
+        return reporterFactory.close();
     }
 
-    private void executeTestSet( Class clazz, RunListener reporter, ClassLoader classLoader, RunNotifier listeners )
+    private void executeTestSet( Class clazz, RunListener reporter, RunNotifier listeners )
         throws ReporterException, TestSetFailedException
     {
         final ReportEntry report = new SimpleReportEntry( this.getClass().getName(), clazz.getName() );
@@ -134,7 +139,8 @@ public class JUnit4Provider extends Abst
         }
     }
 
-    private RunNotifier getRunNotifer( org.junit.runner.notification.RunListener main, List<org.junit.runner.notification.RunListener> others )
+    private RunNotifier getRunNotifer( org.junit.runner.notification.RunListener main,
+                                       List<org.junit.runner.notification.RunListener> others )
     {
         RunNotifier fNotifier = new RunNotifier();
         fNotifier.addListener( main );
@@ -147,7 +153,8 @@ public class JUnit4Provider extends Abst
 
     // I am not entierly sure as to why we do this explicit freeing, it's one of those
     // pieces of code that just seem to linger on in here ;)
-    private void closeRunNotifer( org.junit.runner.notification.RunListener main, List<org.junit.runner.notification.RunListener> others )
+    private void closeRunNotifer( org.junit.runner.notification.RunListener main,
+                                  List<org.junit.runner.notification.RunListener> others )
     {
         RunNotifier fNotifier = new RunNotifier();
         fNotifier.removeListener( main );
@@ -193,9 +200,4 @@ public class JUnit4Provider extends Abst
         final String property = System.getProperty( "surefire.junit4.upgradecheck" );
         return property != null;
     }
-
-    public Boolean isRunnable()
-    {
-        return Boolean.TRUE;
-    }
 }

Copied: maven/surefire/trunk/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4ProviderTest.java (from r1097226, maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/SupressHeaderOutputConsumerProxy.java)
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4ProviderTest.java?p2=maven/surefire/trunk/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4ProviderTest.java&p1=maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/SupressHeaderOutputConsumerProxy.java&r1=1097226&r2=1097246&rev=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/SupressHeaderOutputConsumerProxy.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4ProviderTest.java Wed Apr 27 21:20:12 2011
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.surefire.booterclient.output;
+package org.apache.maven.surefire.junit4;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,33 +19,23 @@ package org.apache.maven.plugin.surefire
  * under the License.
  */
 
+import java.util.Properties;
+import org.apache.maven.surefire.booter.BaseProviderFactory;
+import org.apache.maven.surefire.testset.TestRequest;
+
+import junit.framework.TestCase;
+
 /**
- * Surefire output consumer that will take out the surefire header
- *
- * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
- * @version $Id$
- * @since 2.1
+ * @author Kristian Rosenvold
  */
-public class SupressHeaderOutputConsumerProxy
-    extends OutputConsumerProxy
+public class JUnit4ProviderTest
+    extends TestCase
 {
-
-    /**
-     * Create a consumer that will delegate all calls to the next filter but {@link #consumeHeaderLine(String)}
-     *
-     * @param nextFilter filter to delegate to
-     */
-    public SupressHeaderOutputConsumerProxy( OutputConsumer nextFilter )
-    {
-        super( nextFilter );
+    public void testCreateProvider(){
+        BaseProviderFactory providerParameters = new BaseProviderFactory(null);
+        providerParameters.setProviderProperties( new Properties() );
+        providerParameters.setClassLoaders( this.getClass().getClassLoader(), this.getClass().getClassLoader() );
+        providerParameters.setTestRequest(  new TestRequest( null, null, null ) );
+        assertNotNull(new JUnit4Provider( providerParameters ));
     }
-
-    /**
-     * Do nothing
-     */
-    public void consumeHeaderLine( String line )
-    {
-        /* do nothing */
-    }
-
 }

Propchange: maven/surefire/trunk/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4ProviderTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/surefire/trunk/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4ProviderTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ClassesParallelRunListener.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ClassesParallelRunListener.java?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ClassesParallelRunListener.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ClassesParallelRunListener.java Wed Apr 27 21:20:12 2011
@@ -19,12 +19,11 @@ package org.apache.maven.surefire.junitc
  * under the License.
  */
 
+import java.util.Map;
 import org.apache.maven.surefire.report.ReporterConfiguration;
 import org.apache.maven.surefire.report.ReporterFactory;
 import org.apache.maven.surefire.testset.TestSetFailedException;
 
-import java.util.Map;
-
 /**
  * @author Kristian Rosenvold
  */
@@ -35,7 +34,7 @@ public class ClassesParallelRunListener
                                        ReporterConfiguration reporterConfiguration )
         throws TestSetFailedException
     {
-        super( reporterFactory, false, reporterConfiguration, classMethodCounts );
+        super( reporterFactory, false, classMethodCounts );
     }
 
     @Override

Modified: maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentReporterManager.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentReporterManager.java?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentReporterManager.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentReporterManager.java Wed Apr 27 21:20:12 2011
@@ -19,53 +19,41 @@ package org.apache.maven.surefire.junitc
  * under the License.
  */
 
-import org.apache.maven.surefire.report.RunListener;
+import java.util.Map;
+import org.apache.maven.surefire.report.ConsoleOutputReceiver;
 import org.apache.maven.surefire.report.ReportEntry;
 import org.apache.maven.surefire.report.ReporterConfiguration;
-import org.apache.maven.surefire.report.ReporterException;
 import org.apache.maven.surefire.report.ReporterFactory;
+import org.apache.maven.surefire.report.RunListener;
 import org.apache.maven.surefire.testset.TestSetFailedException;
 
-import java.io.IOException;
-import java.util.Map;
-
 /**
  * @author Kristian Rosenvold
  */
 public abstract class ConcurrentReporterManager
-    implements RunListener
+    implements RunListener, ConsoleOutputReceiver
 {
     private final Map<String, TestSet> classMethodCounts;
-
-    private final ReporterConfiguration reporterConfiguration;
+    // private final ReporterConfiguration reporterConfiguration;
 
     private final ThreadLocal<RunListener> reporterManagerThreadLocal = new ThreadLocal<RunListener>();
 
     private final boolean reportImmediately;
 
-    private final ConcurrentPrintStream out = new ConcurrentPrintStream( true );
-
-    private final ConcurrentPrintStream err = new ConcurrentPrintStream( false );
-
     private final ReporterFactory reporterFactory;
 
     ConcurrentReporterManager( ReporterFactory reporterFactory, boolean reportImmediately,
-                               ReporterConfiguration reporterConfiguration, Map<String, TestSet> classMethodCounts )
+                               Map<String, TestSet> classMethodCounts )
         throws TestSetFailedException
     {
         this.reportImmediately = reportImmediately;
         this.reporterFactory = reporterFactory;
-        this.reporterConfiguration = reporterConfiguration;
         this.classMethodCounts = classMethodCounts;
 
         // We must create the first reporterManager here, even though we will never use it.
         // There is some room for improvement here
+        // todo: Find out if needed for 2.8.1
         this.reporterFactory.createReporter();
-        // Important: We must capture System.out/System.err AFTER the  reportManager captures stdout/stderr
-        // because we know how to demultiplex correctly. The redirection in reporterManager is basically
-        // ignored/unused because we use ConcurrentPrintStream.
-        System.setOut( out );
-        System.setErr( err );
     }
 
     public void testSetStarting( ReportEntry description )
@@ -73,20 +61,11 @@ public abstract class ConcurrentReporter
     }
 
     public void testSetCompleted( ReportEntry result )
-        throws ReporterException
     {
+        final RunListener reporterManager = getReporterManager();
         for ( TestSet testSet : classMethodCounts.values() )
         {
-            testSet.replay( getReporterManager() );
-        }
-        try
-        {
-            out.writeTo( reporterConfiguration.getOriginalSystemOut() );
-            err.writeTo( reporterConfiguration.getOriginalSystemErr() );
-        }
-        catch ( IOException e )
-        {
-            throw new ReporterException( "When writing reports", e );
+            testSet.replay( reporterManager );
         }
     }
 
@@ -183,4 +162,20 @@ public abstract class ConcurrentReporter
                                                !parallelBoth );
     }
 
+
+    public void writeTestOutput( byte[] buf, int off, int len, boolean stdout )
+    {
+        TestMethod threadTestMethod = TestMethod.getThreadTestMethod();
+        if ( threadTestMethod != null )
+        {
+            final LogicalStream logicalStream = threadTestMethod.getLogicalStream();
+            logicalStream.write( stdout, buf, off, len );
+        }
+        else
+        {
+            // No test running, just dump the message "somewhere"
+            reporterFactory.createConsoleReporter().writeMessage( new String( buf, off, len ) );
+        }
+    }
+
 }

Modified: maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java Wed Apr 27 21:20:12 2011
@@ -19,25 +19,26 @@ package org.apache.maven.surefire.junitc
  * under the License.
  */
 
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 import org.apache.maven.surefire.common.junit4.JUnit4RunListenerFactory;
 import org.apache.maven.surefire.common.junit4.JUnit4TestChecker;
 import org.apache.maven.surefire.providerapi.AbstractProvider;
 import org.apache.maven.surefire.providerapi.ProviderParameters;
-import org.apache.maven.surefire.report.RunListener;
+import org.apache.maven.surefire.report.ConsoleOutputCapture;
+import org.apache.maven.surefire.report.ConsoleOutputReceiver;
 import org.apache.maven.surefire.report.ReporterConfiguration;
 import org.apache.maven.surefire.report.ReporterException;
 import org.apache.maven.surefire.report.ReporterFactory;
+import org.apache.maven.surefire.report.RunListener;
 import org.apache.maven.surefire.suite.RunResult;
 import org.apache.maven.surefire.testset.TestSetFailedException;
 import org.apache.maven.surefire.util.DirectoryScanner;
 import org.apache.maven.surefire.util.ScannerFilter;
 import org.apache.maven.surefire.util.TestsToRun;
 
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
 /**
  * @author Kristian Rosenvold
  */
@@ -88,7 +89,7 @@ public class JUnitCoreProvider
     public RunResult invoke( Object forkTestSet )
         throws TestSetFailedException, ReporterException
     {
-        final String message = "Concurrency config is " + jUnitCoreParameters.toString();
+        final String message = "Concurrency config is " + jUnitCoreParameters.toString() + "\n";
         final ReporterFactory reporterFactory = providerParameters.getReporterFactory();
 
         reporterFactory.createConsoleReporter().writeMessage( message );
@@ -103,6 +104,9 @@ public class JUnitCoreProvider
             ConcurrentReporterManager.createInstance( testSetMap, reporterFactory, this.reporterConfiguration,
                                                       jUnitCoreParameters.isParallelClasses(),
                                                       jUnitCoreParameters.isParallelBoth() );
+
+        ConsoleOutputCapture.startCapture((ConsoleOutputReceiver) listener);
+
         org.junit.runner.notification.RunListener jUnit4RunListener = new JUnitCoreRunListener( listener, testSetMap );
         customRunListeners.add( 0, jUnit4RunListener );
 

Modified: maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java Wed Apr 27 21:20:12 2011
@@ -19,14 +19,14 @@ package org.apache.maven.surefire.junitc
  * under the License.
  */
 
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.TestsToRun;
-
 import java.util.List;
 import java.util.concurrent.ExecutionException;
+import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.util.TestsToRun;
 
 import org.junit.runner.Computer;
 import org.junit.runner.JUnitCore;
+import org.junit.runner.Result;
 import org.junit.runner.notification.RunListener;
 
 /**
@@ -49,7 +49,17 @@ class JUnitCoreWrapper
         }
         try
         {
-            junitCore.run( computer, testsToRun.getLocatedClasses() );
+            final Result run = junitCore.run( computer, testsToRun.getLocatedClasses() );
+
+            if ( run.getFailureCount() > 0 )
+            {
+                // There is something interesting going on here;
+                // the "run" result can contain other exceptions that did not occur as
+                // part of the test run, for instance if something bad happened in the
+                // RunListener. But it also contains regular problems from the test-run.
+                // I am not entirely sure of what to do with this; it might even be
+                // that these errors are the correct errors to report back to the client.
+            }
         }
         finally
         {

Modified: maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/LogicalStream.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/LogicalStream.java?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/LogicalStream.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/LogicalStream.java Wed Apr 27 21:20:12 2011
@@ -35,14 +35,17 @@ public class LogicalStream
     class Entry
     {
         final boolean stdout;
+
         final byte[] b;
+
         final int off;
+
         final int len;
 
         Entry( boolean stdout, byte[] b, int off, int len )
         {
             this.stdout = stdout;
-            this.b = ByteBuffer.copy( b, off, len);
+            this.b = ByteBuffer.copy( b, off, len );
             this.off = 0;
             this.len = len;
         }
@@ -65,9 +68,9 @@ public class LogicalStream
             reporter.writeDetailMessage( str );
         }
 
-        public void writeDetails( ConsoleOutputReceiver outputReceiver)
+        public void writeDetails( ConsoleOutputReceiver outputReceiver )
         {
-            outputReceiver.writeTestOutput( b, off, len , stdout );
+            outputReceiver.writeTestOutput( b, off, len, stdout );
         }
 
         @Override

Modified: maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/MethodsParallelRunListener.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/MethodsParallelRunListener.java?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/MethodsParallelRunListener.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/MethodsParallelRunListener.java Wed Apr 27 21:20:12 2011
@@ -19,12 +19,11 @@ package org.apache.maven.surefire.junitc
  * under the License.
  */
 
+import java.util.Map;
 import org.apache.maven.surefire.report.ReporterConfiguration;
 import org.apache.maven.surefire.report.ReporterFactory;
 import org.apache.maven.surefire.testset.TestSetFailedException;
 
-import java.util.Map;
-
 /**
  * @author Kristian Rosenvold
  */
@@ -39,7 +38,7 @@ public class MethodsParallelRunListener
                                        ReporterConfiguration reporterConfiguration, boolean reportImmediately )
         throws TestSetFailedException
     {
-        super( reporterFactory, reportImmediately, reporterConfiguration, classMethodCounts );
+        super( reporterFactory, reportImmediately, classMethodCounts );
     }
 
     @Override

Modified: maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestMethod.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestMethod.java?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestMethod.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestMethod.java Wed Apr 27 21:20:12 2011
@@ -22,7 +22,7 @@ package org.apache.maven.surefire.junitc
 import org.apache.maven.surefire.report.ConsoleOutputReceiver;
 import org.apache.maven.surefire.report.ConsoleOutputReceiverForCurrentThread;
 import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.Reporter;
+import org.apache.maven.surefire.report.RunListener;
 
 /**
  * Represents the test-state of a single test method that is run.
@@ -88,7 +88,7 @@ class TestMethod
     }
 
 
-    public void replay( Reporter reporter )
+    public void replay( RunListener reporter )
         throws Exception
     {
 
@@ -101,16 +101,16 @@ class TestMethod
         reporter.testStarting( createReportEntry() );
         if ( output != null )
         {
-            output.writeDetails( reporter );
+            output.writeDetails( ( (ConsoleOutputReceiver) reporter ) );
         }
 
         if ( testFailure != null )
         {
-            reporter.testFailed( testFailure, getStdout(), getStdErr() );
+            reporter.testFailed( testFailure );
         }
         else if ( testError != null )
         {
-            reporter.testError( testError, getStdout(), getStdErr() );
+            reporter.testError( testError );
         }
         else
         {

Modified: maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java Wed Apr 27 21:20:12 2011
@@ -19,18 +19,17 @@ package org.apache.maven.surefire.junitc
  * under the License.
  */
 
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.Reporter;
-import org.apache.maven.surefire.report.SimpleReportEntry;
-
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
-
+import org.apache.maven.surefire.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.report.ReportEntry;
+import org.apache.maven.surefire.report.RunListener;
+import org.apache.maven.surefire.report.SimpleReportEntry;
 import org.apache.maven.surefire.util.NestedRuntimeException;
+
 import org.junit.runner.Description;
 
 /**
@@ -81,8 +80,10 @@ public class TestSet
 
             for ( TestMethod testMethod : testMethods )
             {
-                testMethod.replay( (Reporter) target );
+                testMethod.replay( target );
+                testMethod.getLogicalStream().writeDetails( (ConsoleOutputReceiver) target );
             }
+
             report = createReportEntry( elapsed );
 
             target.testSetCompleted( report );

Modified: maven/surefire/trunk/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentReporterManagerTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentReporterManagerTest.java?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentReporterManagerTest.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentReporterManagerTest.java Wed Apr 27 21:20:12 2011
@@ -20,37 +20,33 @@
 package org.apache.maven.surefire.junitcore;
 
 
-import junit.framework.Assert;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import org.apache.maven.surefire.report.ConsoleReporter;
-import org.apache.maven.surefire.report.RunListener;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.PrintStream;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.maven.plugin.surefire.report.ReporterManagerFactory;
 import org.apache.maven.surefire.report.ReporterConfiguration;
 import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.report.ReporterManagerFactory;
+import org.apache.maven.surefire.report.RunListener;
 import org.apache.maven.surefire.report.RunStatistics;
 import org.apache.maven.surefire.testset.TestSetFailedException;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.Computer;
 import org.junit.runner.JUnitCore;
 
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.PrintStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-
-import static junit.framework.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
 /*
  * @author Kristian Rosenvold
  */
 
-public class ConcurrentReporterManagerTest extends TestCase
+public class ConcurrentReporterManagerTest
+    extends TestCase
 {
     // Tests are in order of increasing complexity
     public void testNoErrorsCounting()
@@ -176,7 +172,8 @@ public class ConcurrentReporterManagerTe
     {
         HashMap<String, TestSet> classMethodCounts = new HashMap<String, TestSet>();
         final ReporterFactory reporterManagerFactory = createReporterFactory();
-        org.junit.runner.notification.RunListener demultiplexingRunListener = createRunListener( reporterManagerFactory, classMethodCounts );
+        org.junit.runner.notification.RunListener demultiplexingRunListener =
+            createRunListener( reporterManagerFactory, classMethodCounts );
 
         JUnitCore jUnitCore = new JUnitCore();
 
@@ -188,7 +185,8 @@ public class ConcurrentReporterManagerTe
         return reporterManagerFactory.getGlobalRunStatistics();
     }
 
-    private RunStatistics runClasses( ReporterFactory reporterManagerFactory, org.junit.runner.notification.RunListener demultiplexingRunListener,
+    private RunStatistics runClasses( ReporterFactory reporterManagerFactory,
+                                      org.junit.runner.notification.RunListener demultiplexingRunListener,
                                       Class... classes )
         throws TestSetFailedException
     {
@@ -202,7 +200,8 @@ public class ConcurrentReporterManagerTe
         return reporterManagerFactory.getGlobalRunStatistics();
     }
 
-    private org.junit.runner.notification.RunListener createRunListener( ReporterFactory reporterFactory, Map<String, TestSet> testSetMap )
+    private org.junit.runner.notification.RunListener createRunListener( ReporterFactory reporterFactory,
+                                                                         Map<String, TestSet> testSetMap )
         throws TestSetFailedException
     {
         return new JUnitCoreRunListener(
@@ -211,7 +210,7 @@ public class ConcurrentReporterManagerTe
 
     public ReporterConfiguration getReporterConfiguration()
     {
-        return new ReporterConfiguration( new ArrayList(), new File( "." ), true, null );
+        return new ReporterConfiguration( new File( "." ), true );
     }
 
 
@@ -403,13 +402,12 @@ public class ConcurrentReporterManagerTe
     private ReporterFactory createReporterFactory()
     {
         ReporterConfiguration reporterConfiguration = getTestReporterConfiguration();
-        return new ReporterManagerFactory( this.getClass().getClassLoader(), reporterConfiguration );
+        return new ReporterManagerFactory( this.getClass().getClassLoader(), reporterConfiguration, Arrays.asList() );
     }
 
     public static ReporterConfiguration getTestReporterConfiguration()
     {
-        return new ReporterConfiguration( Arrays.asList( ConsoleReporter.class.getName() ), null, Boolean.TRUE,
-                                          null );
+        return new ReporterConfiguration( null, Boolean.TRUE );
     }
 
 

Modified: maven/surefire/trunk/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MavenSurefireJUnit47RunnerTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MavenSurefireJUnit47RunnerTest.java?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MavenSurefireJUnit47RunnerTest.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MavenSurefireJUnit47RunnerTest.java Wed Apr 27 21:20:12 2011
@@ -16,17 +16,16 @@
  */
 package org.apache.maven.surefire.junitcore;
 
-import junit.framework.TestCase;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.ReporterConfiguration;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.report.ReporterManagerFactory;
-
 import java.io.File;
-import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
+import org.apache.maven.plugin.surefire.report.ReporterManagerFactory;
+import org.apache.maven.surefire.report.ReporterConfiguration;
+import org.apache.maven.surefire.report.ReporterFactory;
+import org.apache.maven.surefire.report.RunListener;
 
 import junit.framework.Assert;
+import junit.framework.TestCase;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.Computer;
@@ -87,7 +86,8 @@ import org.junit.runner.notification.Fai
  * @author <a href="mailto:aslak@redhat.com">Aslak Knutsen</a>
  * @version $Revision: $
  */
-public class MavenSurefireJUnit47RunnerTest extends TestCase
+public class MavenSurefireJUnit47RunnerTest
+    extends TestCase
 {
 
     /*
@@ -120,13 +120,14 @@ public class MavenSurefireJUnit47RunnerT
         ReporterConfiguration reporterConfiguration = ConcurrentReporterManagerTest.getTestReporterConfiguration();
 
         ReporterFactory reporterManagerFactory =
-            new ReporterManagerFactory( this.getClass().getClassLoader(), reporterConfiguration );
+            new ReporterManagerFactory( this.getClass().getClassLoader(), reporterConfiguration, Arrays.asList() );
 
         final HashMap<String, TestSet> classMethodCounts = new HashMap<String, TestSet>();
         RunListener reporter = ConcurrentReporterManager.createInstance( classMethodCounts, reporterManagerFactory,
-                                                                      getReporterConfiguration(), false, false );
+                                                                         getReporterConfiguration(), false, false );
 
-        org.junit.runner.notification.RunListener concurrentReportingRunListener = new JUnitCoreRunListener( reporter, classMethodCounts );
+        org.junit.runner.notification.RunListener concurrentReportingRunListener =
+            new JUnitCoreRunListener( reporter, classMethodCounts );
         Computer computer = new Computer();
 
         JUnitCore junitCore = new JUnitCore();
@@ -156,7 +157,7 @@ public class MavenSurefireJUnit47RunnerT
 
     private ReporterConfiguration getReporterConfiguration()
     {
-        return new ReporterConfiguration( new ArrayList(), new File( "." ), true, null );
+        return new ReporterConfiguration( new File( "." ), true );
     }
 
     /**

Modified: maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java Wed Apr 27 21:20:12 2011
@@ -19,31 +19,31 @@ package org.apache.maven.surefire.testng
  * under the License.
  */
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.SortedMap;
+import java.util.TreeMap;
 import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
 import org.apache.maven.surefire.NonAbstractClassFilter;
-import org.apache.maven.surefire.report.RunListener;
+import org.apache.maven.surefire.report.ConsoleOutputCapture;
+import org.apache.maven.surefire.report.ConsoleOutputReceiver;
 import org.apache.maven.surefire.report.ReportEntry;
 import org.apache.maven.surefire.report.ReporterException;
 import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.report.ReporterManagerFactory;
+import org.apache.maven.surefire.report.RunListener;
 import org.apache.maven.surefire.report.SimpleReportEntry;
 import org.apache.maven.surefire.testset.TestSetFailedException;
 import org.apache.maven.surefire.util.DefaultDirectoryScanner;
 import org.apache.maven.surefire.util.DirectoryScanner;
 import org.apache.maven.surefire.util.TestsToRun;
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
 /**
  * Test suite for TestNG based on a directory of Java test classes. Can also execute JUnit tests.
  *
@@ -64,11 +64,12 @@ public class TestNGDirectoryTestSuite
     private SortedMap testSets;
 
     private final DirectoryScanner surefireDirectoryScanner;
-    
+
     private String testMethodPattern;
 
     public TestNGDirectoryTestSuite( File basedir, ArrayList includes, ArrayList excludes, String testSourceDirectory,
-                                     String artifactVersion, Properties confOptions, File reportsDirectory, String testMethodPattern )
+                                     String artifactVersion, Properties confOptions, File reportsDirectory,
+                                     String testMethodPattern )
     {
 
         this.surefireDirectoryScanner = new DefaultDirectoryScanner( basedir, includes, excludes, "filesystem" );
@@ -77,7 +78,7 @@ public class TestNGDirectoryTestSuite
 
         this.testSourceDirectory = testSourceDirectory;
         this.reportsDirectory = reportsDirectory;
-        this.version =  new DefaultArtifactVersion( artifactVersion );
+        this.version = new DefaultArtifactVersion( artifactVersion );
         this.testMethodPattern = testMethodPattern;
     }
 
@@ -97,6 +98,8 @@ public class TestNGDirectoryTestSuite
         }
 
         RunListener reporter = reporterManagerFactory.createReporter();
+        ConsoleOutputCapture.startCapture( (ConsoleOutputReceiver) reporter );
+
         startTestSuite( reporter, this );
 
         TestNGExecutor.run( new Class[]{ (Class) testsToRun.iterator().next() }, this.testSourceDirectory, this.options,
@@ -141,7 +144,9 @@ public class TestNGDirectoryTestSuite
             junitReportsDirectory = new File( reportsDirectory, "testng-junit-results" );
         }
 
-        RunListener reporterManager = new SynchronizedReporterManager( reporterFactory.createReporter() );
+//        RunListener reporterManager = new SynchronizedReporterManager( reporterFactory.createReporter() );
+        RunListener reporterManager = reporterFactory.createReporter();
+        ConsoleOutputCapture.startCapture( (ConsoleOutputReceiver) reporterManager );
         startTestSuite( reporterManager, this );
 
         Class[] testClasses = (Class[]) testNgTestClasses.toArray( new Class[testNgTestClasses.size()] );
@@ -170,7 +175,7 @@ public class TestNGDirectoryTestSuite
     }
 
     // single class test
-    public void execute( String testSetName, ReporterManagerFactory reporterManagerFactory, ClassLoader classLoader )
+    public void execute( String testSetName, ReporterFactory reporterManagerFactory, ClassLoader classLoader )
         throws ReporterException, TestSetFailedException
     {
         if ( testSets == null )
@@ -185,6 +190,8 @@ public class TestNGDirectoryTestSuite
         }
 
         RunListener reporter = reporterManagerFactory.createReporter();
+        ConsoleOutputCapture.startCapture( (ConsoleOutputReceiver) reporter );
+
         startTestSuite( reporter, this );
 
         TestNGExecutor.run( new Class[]{ testSet.getTestClass() }, this.testSourceDirectory, this.options, this.version,

Modified: maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java Wed Apr 27 21:20:12 2011
@@ -19,12 +19,15 @@ package org.apache.maven.surefire.testng
  * under the License.
  */
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Properties;
 import org.apache.maven.surefire.providerapi.AbstractProvider;
 import org.apache.maven.surefire.providerapi.ProviderParameters;
 import org.apache.maven.surefire.report.ReporterConfiguration;
 import org.apache.maven.surefire.report.ReporterException;
 import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.report.ReporterManagerFactory;
 import org.apache.maven.surefire.suite.RunResult;
 import org.apache.maven.surefire.testset.DirectoryScannerParameters;
 import org.apache.maven.surefire.testset.TestArtifactInfo;
@@ -34,11 +37,6 @@ import org.apache.maven.surefire.util.Di
 import org.apache.maven.surefire.util.NestedRuntimeException;
 import org.apache.maven.surefire.util.TestsToRun;
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Properties;
-
 /**
  * @author Kristian Rosenvold
  * @noinspection UnusedDeclaration
@@ -96,12 +94,12 @@ public class TestNGProvider
             testNGXmlTestSuite.locateTestSets( testClassLoader );
             if ( forkTestSet != null && testRequest == null )
             {
-                testNGXmlTestSuite.execute( (String) forkTestSet, (ReporterManagerFactory) reporterFactory,
+                testNGXmlTestSuite.execute( (String) forkTestSet, reporterFactory,
                                             testClassLoader );
             }
             else
             {
-                testNGXmlTestSuite.execute( (ReporterManagerFactory) reporterFactory );
+                testNGXmlTestSuite.execute( reporterFactory );
             }
         }
         else

Modified: maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGXmlTestSuite.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGXmlTestSuite.java?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGXmlTestSuite.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGXmlTestSuite.java Wed Apr 27 21:20:12 2011
@@ -19,13 +19,6 @@ package org.apache.maven.surefire.testng
  * under the License.
  */
 
-import org.apache.maven.artifact.versioning.ArtifactVersion;
-import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.ReporterException;
-import org.apache.maven.surefire.report.ReporterManagerFactory;
-import org.apache.maven.surefire.testset.TestSetFailedException;
-
 import java.io.File;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -33,6 +26,14 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
+import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
+import org.apache.maven.surefire.report.ConsoleOutputCapture;
+import org.apache.maven.surefire.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.report.ReporterException;
+import org.apache.maven.surefire.report.ReporterFactory;
+import org.apache.maven.surefire.report.RunListener;
+import org.apache.maven.surefire.testset.TestSetFailedException;
 
 /**
  * Handles suite xml file definitions for TestNG.
@@ -76,21 +77,24 @@ public class TestNGXmlTestSuite
         this.reportsDirectory = reportsDirectory;
     }
 
-    public void execute( ReporterManagerFactory reporterManagerFactory )
+    public void execute( ReporterFactory reporterManagerFactory )
         throws ReporterException, TestSetFailedException
     {
         if ( testSets == null )
         {
             throw new IllegalStateException( "You must call locateTestSets before calling execute" );
         }
-        RunListener reporter = new SynchronizedReporterManager( reporterManagerFactory.createReporter() );
+//        RunListener reporter = new SynchronizedReporterManager( reporterManagerFactory.createReporter() );
+        RunListener reporter = reporterManagerFactory.createReporter();
+        ConsoleOutputCapture.startCapture( (ConsoleOutputReceiver) reporter );
+
         TestNGDirectoryTestSuite.startTestSuite( reporter, this );
-        TestNGExecutor.run( this.suiteFilePaths, this.testSourceDirectory, this.options, this.version, reporter,
-                            this, reportsDirectory );
+        TestNGExecutor.run( this.suiteFilePaths, this.testSourceDirectory, this.options, this.version, reporter, this,
+                            reportsDirectory );
         TestNGDirectoryTestSuite.finishTestSuite( reporter, this );
     }
 
-    public void execute( String testSetName, ReporterManagerFactory reporterManagerFactory, ClassLoader classLoader )
+    public void execute( String testSetName, ReporterFactory reporterManagerFactory, ClassLoader classLoader )
         throws TestSetFailedException
     {
         throw new TestSetFailedException( "Cannot run individual test when suite files are specified" );

Modified: maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNgTestSuite.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNgTestSuite.java?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNgTestSuite.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNgTestSuite.java Wed Apr 27 21:20:12 2011
@@ -19,12 +19,11 @@ package org.apache.maven.surefire.testng
  * under the License.
  */
 
+import java.util.Map;
 import org.apache.maven.surefire.report.ReporterException;
-import org.apache.maven.surefire.report.ReporterManagerFactory;
+import org.apache.maven.surefire.report.ReporterFactory;
 import org.apache.maven.surefire.testset.TestSetFailedException;
 
-import java.util.Map;
-
 /**
  * A complete test suite that contains one or more test sets.
  *
@@ -33,7 +32,7 @@ import java.util.Map;
 public interface TestNgTestSuite
 {
 
-    void execute( String testSetName, ReporterManagerFactory reporterManagerFactory, ClassLoader classLoader )
+    void execute( String testSetName, ReporterFactory reporterManagerFactory, ClassLoader classLoader )
         throws ReporterException, TestSetFailedException;
 
     Map locateTestSets( ClassLoader classLoader )

Modified: maven/surefire/trunk/surefire-setup-integration-tests/pom.xml
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-setup-integration-tests/pom.xml?rev=1097246&r1=1097245&r2=1097246&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-setup-integration-tests/pom.xml (original)
+++ maven/surefire/trunk/surefire-setup-integration-tests/pom.xml Wed Apr 27 21:20:12 2011
@@ -170,9 +170,15 @@
               <value>${project.build.directory}/it-repo</value>
             </property>
           </systemProperties>
-
         </configuration>
-      </plugin>
+        <dependencies>
+          <dependency>
+            <groupId>org.apache.maven.surefire</groupId>
+            <artifactId>surefire-shadefire</artifactId>
+            <version>${project.version}</version>
+          </dependency>
+        </dependencies>
+     </plugin>
       <plugin>
         <artifactId>maven-enforcer-plugin</artifactId>
         <executions>