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 2016/09/16 22:55:03 UTC

[2/5] maven-surefire git commit: [SUREFIRE-1254] add color messages

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-integration-tests/src/test/resources/surefire-1122-parallel-and-flakyTests/pom.xml
----------------------------------------------------------------------
diff --git a/surefire-integration-tests/src/test/resources/surefire-1122-parallel-and-flakyTests/pom.xml b/surefire-integration-tests/src/test/resources/surefire-1122-parallel-and-flakyTests/pom.xml
index 5fa0110..62ef251 100644
--- a/surefire-integration-tests/src/test/resources/surefire-1122-parallel-and-flakyTests/pom.xml
+++ b/surefire-integration-tests/src/test/resources/surefire-1122-parallel-and-flakyTests/pom.xml
@@ -20,15 +20,11 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.maven.surefire</groupId>
-    <artifactId>it-parent</artifactId>
-    <version>1.0</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
+
   <groupId>org.apache.maven.plugins.surefire</groupId>
   <artifactId>jiras-surefire-1122</artifactId>
   <version>1.0</version>
+
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -37,10 +33,12 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
+
   <build>
     <plugins>
       <plugin>
         <artifactId>maven-compiler-plugin</artifactId>
+        <version>2.3.2</version>
         <configuration>
           <source>1.5</source>
           <target>1.5</target>
@@ -48,6 +46,7 @@
       </plugin>
       <plugin>
         <artifactId>maven-surefire-plugin</artifactId>
+        <version>${surefire.version}</version>
         <dependencies>
           <dependency>
             <groupId>org.apache.maven.surefire</groupId>

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-logger-api/pom.xml
----------------------------------------------------------------------
diff --git a/surefire-logger-api/pom.xml b/surefire-logger-api/pom.xml
new file mode 100644
index 0000000..1e64159
--- /dev/null
+++ b/surefire-logger-api/pom.xml
@@ -0,0 +1,54 @@
+<?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>
+
+    <parent>
+        <groupId>org.apache.maven.surefire</groupId>
+        <artifactId>surefire</artifactId>
+        <version>2.19.2-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>surefire-logger-api</artifactId>
+
+    <name>SureFire Logger API</name>
+    <description>
+        Interfaces and Utilities related only to internal SureFire Logger API. Free of dependencies.
+    </description>
+
+    <properties>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+    </properties>
+
+    <developers>
+        <developer>
+            <id>tibordigana</id>
+            <name>Tibor Diga\u0148a (tibor17)</name>
+            <email>tibordigana@apache.org</email>
+            <roles>
+                <role>PMC</role>
+            </roles>
+            <timezone>Europe/Bratislava</timezone>
+        </developer>
+    </developers>
+
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/ConsoleLogger.java
----------------------------------------------------------------------
diff --git a/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/ConsoleLogger.java b/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/ConsoleLogger.java
new file mode 100644
index 0000000..6baa7e3
--- /dev/null
+++ b/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/ConsoleLogger.java
@@ -0,0 +1,64 @@
+package org.apache.maven.plugin.surefire.log.api;
+
+/*
+ * 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.
+ */
+
+/**
+ * Allows providers to write console messages on the running maven process.
+ * <p/>
+ * This output is associated with the entire test run and not a specific
+ * test, which means it just goes "straight" to the console "immediately".
+ * <p/>
+ * s* <p/>
+ * <p/>
+ * This interface is used in org.apache.maven.plugin.surefire.CommonReflector and reflected
+ * via IsolatedClassLoader which can see classes from JRE only. This interface MUST use
+ * JRE types in method signatures, e.g. {@link String} or {@link Throwable}, etc.
+ * <p/>
+ */
+public interface ConsoleLogger
+{
+    void debug( String message );
+
+    void info( String message );
+
+    void warning( String message );
+
+    /**
+     * @param message          message to log
+     */
+    void error( String message );
+
+    /**
+     * Simply delegates to {@link #error(String) error( toString( t, message ) )}.
+     *
+     * @param message          message to log
+     * @param t                exception, message and trace to log
+     */
+    void error( String message, Throwable t );
+
+    /**
+     * Simply delegates to method {@link #error(String, Throwable) error(null, Throwable)}.
+     *
+     * @param t                exception, message and trace to log
+     */
+    void error( Throwable t );
+
+
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/ConsoleLoggerDecorator.java
----------------------------------------------------------------------
diff --git a/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/ConsoleLoggerDecorator.java b/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/ConsoleLoggerDecorator.java
new file mode 100644
index 0000000..d0761d8
--- /dev/null
+++ b/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/ConsoleLoggerDecorator.java
@@ -0,0 +1 @@
+package org.apache.maven.plugin.surefire.log.api;

/*
 * 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.
 */

/**
 * Decorator around {@link ConsoleLogger}.
 * This class is loaded in the isolated ClassLoader and the child logger in the in-plugi
 n ClassLoader.
 *
 * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
 * @since 2.19.2
 */
public final class ConsoleLoggerDecorator
        implements ConsoleLogger
{
    private final Object logger;

    public ConsoleLoggerDecorator( Object logger )
    {
        if ( logger == null )
        {
            throw new NullPointerException( "logger argument is null in " + ConsoleLoggerDecorator.class );
        }
        this.logger = logger;
    }

    public void debug( String message )
    {
        try
        {
            logger.getClass()
                    .getMethod( "debug", String.class )
                    .invoke( logger, message );
        }
        catch ( Exception e )
        {
            throw new IllegalStateException( e.getLocalizedMessage(), e );
        }
    }

    public void info( String message )
    {
        try
        {
            logger.getClass()
                    .getMethod( "info", String.class )
                    .
 invoke( logger, message );
        }
        catch ( Exception e )
        {
            throw new IllegalStateException( e.getLocalizedMessage(), e );
        }
    }

    public void warning( String message )
    {
        try
        {
            logger.getClass()
                    .getMethod( "warning", String.class )
                    .invoke( logger, message );
        }
        catch ( Exception e )
        {
            throw new IllegalStateException( e.getLocalizedMessage(), e );
        }
    }

    public void error( String message )
    {
        try
        {
            logger.getClass()
                    .getMethod( "error", String.class )
                    .invoke( logger, message );
        }
        catch ( Exception e )
        {
            throw new IllegalStateException( e.getLocalizedMessage(), e );
        }
    }

    public void error( String message, Throwable t )
    {
        try
        {
            logger.getClass()
                    .getM
 ethod( "error", String.class, Throwable.class )
                    .invoke( logger, message, t );
        }
        catch ( Exception e )
        {
            throw new IllegalStateException( e.getLocalizedMessage(), e );
        }
    }

    public void error( Throwable t )
    {
        try
        {
            logger.getClass()
                    .getMethod( "error", Throwable.class )
                    .invoke( logger, t );
        }
        catch ( Exception e )
        {
            throw new IllegalStateException( e.getLocalizedMessage(), e );
        }
    }
}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/ConsoleLoggerUtils.java
----------------------------------------------------------------------
diff --git a/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/ConsoleLoggerUtils.java b/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/ConsoleLoggerUtils.java
new file mode 100644
index 0000000..fe12ceb
--- /dev/null
+++ b/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/ConsoleLoggerUtils.java
@@ -0,0 +1,55 @@
+package org.apache.maven.plugin.surefire.log.api;
+
+/*
+ * 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.PrintWriter;
+import java.io.StringWriter;
+
+/**
+ * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
+ * @since 2.19.2
+ */
+public final class ConsoleLoggerUtils
+{
+    private ConsoleLoggerUtils()
+    {
+        throw new IllegalStateException( "non instantiable constructor" );
+    }
+
+    public static String toString( String message, Throwable t )
+    {
+        StringWriter result = new StringWriter( 512 );
+        PrintWriter writer = new PrintWriter( result );
+        try
+        {
+            if ( message != null )
+            {
+                writer.println( message );
+            }
+            t.printStackTrace( writer );
+            writer.flush();
+            return result.toString();
+        }
+        finally
+        {
+            writer.close();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/Level.java
----------------------------------------------------------------------
diff --git a/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/Level.java b/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/Level.java
new file mode 100644
index 0000000..0e7164d
--- /dev/null
+++ b/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/Level.java
@@ -0,0 +1,66 @@
+package org.apache.maven.plugin.surefire.log.api;
+
+/*
+ * 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.
+ */
+
+/**
+ * Test result levels {@link #FAILURE}, {@link #UNSTABLE}, {@link #SUCCESS}.
+ * Writing to console without color via {@link #NO_COLOR}.
+ *
+ * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
+ * @since 2.19.2
+ */
+public enum Level
+{
+    /**
+     * direct println
+     */
+    NO_COLOR,
+
+    /**
+     * defaults to bold, green
+     */
+    FAILURE,
+
+    /**
+     * defaults to bold, yellow
+     */
+    UNSTABLE,
+
+    /**
+     * defaults to bold, red
+     */
+    SUCCESS;
+
+    public static Level resolveLevel( boolean hasSuccessful, boolean hasFailure, boolean hasError,
+                                      boolean hasSkipped, boolean hasFlake )
+    {
+        boolean isRed = hasFailure | hasError;
+        if ( isRed )
+        {
+            return FAILURE;
+        }
+        boolean isYellow = hasSkipped | hasFlake;
+        if ( isYellow )
+        {
+            return UNSTABLE;
+        }
+        return hasSuccessful ? SUCCESS : NO_COLOR;
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/NullConsoleLogger.java
----------------------------------------------------------------------
diff --git a/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/NullConsoleLogger.java b/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/NullConsoleLogger.java
new file mode 100644
index 0000000..a78a615
--- /dev/null
+++ b/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/NullConsoleLogger.java
@@ -0,0 +1,53 @@
+package org.apache.maven.plugin.surefire.log.api;
+
+/*
+ * 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.
+ */
+
+/**
+ * Logger doing nothing rather than using null.
+ *
+ * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
+ * @since 2.19.2
+ */
+public final class NullConsoleLogger implements ConsoleLogger
+{
+    public void debug( String message )
+    {
+    }
+
+    public void info( String message )
+    {
+    }
+
+    public void warning( String message )
+    {
+    }
+
+    public void error( String message )
+    {
+    }
+
+    public void error( String message, Throwable t )
+    {
+    }
+
+    public void error( Throwable t )
+    {
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/PrintStreamLogger.java
----------------------------------------------------------------------
diff --git a/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/PrintStreamLogger.java b/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/PrintStreamLogger.java
new file mode 100644
index 0000000..0eac176
--- /dev/null
+++ b/surefire-logger-api/src/main/java/org/apache/maven/plugin/surefire/log/api/PrintStreamLogger.java
@@ -0,0 +1 @@
+package org.apache.maven.plugin.surefire.log.api;

/*
 * 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.PrintStream;

/**
 * For testing purposes.
 */
public class PrintStreamLogger
    implements ConsoleLogger
{
    private
  final PrintStream stream;

    public PrintStreamLogger( PrintStream stream )
    {
        this.stream = stream;
    }

    public void debug( String message )
    {
        stream.println( message );
    }

    public void info( String message )
    {
        stream.println( message );
    }

    public void warning( String message )
    {
        stream.println( message );
    }

    public void error( String message )
    {
        stream.println( message );
    }

    public void error( String message, Throwable t )
    {
        error( ConsoleLoggerUtils.toString( message, t ) );
    }

    public void error( Throwable t )
    {
        error( null, t );
    }
}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java
index 55f89be..a707fee 100644
--- a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java
+++ b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java
@@ -128,7 +128,6 @@ public class JUnit3Provider
     private void executeTestSet( SurefireTestSet testSet, RunListener reporter, ClassLoader classLoader )
         throws TestSetFailedException
     {
-
         ReportEntry report = new SimpleReportEntry( this.getClass().getName(), testSet.getName() );
 
         reporter.testSetStarting( report );

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4ProviderTest.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4ProviderTest.java b/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4ProviderTest.java
index 586c55e..bf6cafc 100644
--- a/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4ProviderTest.java
+++ b/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4ProviderTest.java
@@ -24,9 +24,9 @@ import org.apache.maven.surefire.booter.BaseProviderFactory;
 import org.apache.maven.surefire.testset.TestRequest;
 import org.junit.runner.Description;
 
-import java.util.Arrays;
 import java.util.HashMap;
 
+import static java.util.Arrays.asList;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.*;
 import static org.junit.runner.Description.createSuiteDescription;
@@ -59,7 +59,7 @@ public class JUnit4ProviderTest
         class B {
         }
 
-        Description d = JUnit4Provider.createTestsDescription( Arrays.<Class<?>>asList( A.class, B.class ) );
+        Description d = JUnit4Provider.createTestsDescription( asList( A.class, B.class ) );
         assertThat( d, is( notNullValue() ) );
         assertThat( d.getDisplayName(), not( isEmptyOrNullString() ) );
         assertThat( d.getDisplayName(), is( "null" ) );

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ClassesParallelRunListener.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ClassesParallelRunListener.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ClassesParallelRunListener.java
index 542ffdb..e8ac786 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ClassesParallelRunListener.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ClassesParallelRunListener.java
@@ -20,7 +20,8 @@ package org.apache.maven.surefire.junitcore;
  */
 
 import java.util.Map;
-import org.apache.maven.surefire.report.ConsoleLogger;
+
+import org.apache.maven.surefire.report.ConsoleStream;
 import org.apache.maven.surefire.report.ReporterFactory;
 import org.apache.maven.surefire.testset.TestSetFailedException;
 
@@ -32,10 +33,10 @@ public class ClassesParallelRunListener
     extends ConcurrentRunListener
 {
     public ClassesParallelRunListener( Map<String, TestSet> classMethodCounts, ReporterFactory reporterFactory,
-                                       ConsoleLogger consoleLogger )
+                                       ConsoleStream consoleStream )
         throws TestSetFailedException
     {
-        super( reporterFactory, consoleLogger, false, classMethodCounts );
+        super( reporterFactory, consoleStream, false, classMethodCounts );
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentRunListener.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentRunListener.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentRunListener.java
index 5886317..89c6104 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentRunListener.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentRunListener.java
@@ -20,13 +20,16 @@ package org.apache.maven.surefire.junitcore;
  */
 
 import java.util.Map;
-import org.apache.maven.surefire.report.ConsoleLogger;
 import org.apache.maven.surefire.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.report.ConsoleStream;
 import org.apache.maven.surefire.report.ReportEntry;
 import org.apache.maven.surefire.report.ReporterFactory;
 import org.apache.maven.surefire.report.RunListener;
+import org.apache.maven.surefire.report.StackTraceWriter;
 import org.apache.maven.surefire.testset.TestSetFailedException;
 
+import static org.apache.maven.surefire.junitcore.TestMethod.getThreadTestMethod;
+
 /**
  * Handles responses from concurrent junit
  * <p/>
@@ -47,25 +50,21 @@ public abstract class ConcurrentRunListener
 
     private final boolean reportImmediately;
 
-    private final ReporterFactory reporterFactory;
-
-    private final ConsoleLogger consoleLogger;
+    private final ConsoleStream consoleStream;
 
-    ConcurrentRunListener( ReporterFactory reporterFactory, ConsoleLogger consoleLogger, boolean reportImmediately,
-                           Map<String, TestSet> classMethodCounts )
+    ConcurrentRunListener( final ReporterFactory reporterFactory, ConsoleStream consoleStream,
+                           boolean reportImmediately, Map<String, TestSet> classMethodCounts )
         throws TestSetFailedException
     {
         this.reportImmediately = reportImmediately;
-        this.reporterFactory = reporterFactory;
         this.classMethodCounts = classMethodCounts;
-        this.consoleLogger = consoleLogger;
-
-        this.reporterManagerThreadLocal = new ThreadLocal<RunListener>()
+        this.consoleStream = consoleStream;
+        reporterManagerThreadLocal = new ThreadLocal<RunListener>()
         {
             @Override
             protected RunListener initialValue()
             {
-                return ConcurrentRunListener.this.reporterFactory.createReporter();
+                return reporterFactory.createReporter();
             }
         };
     }
@@ -140,8 +139,8 @@ public abstract class ConcurrentRunListener
 
     public void testSucceeded( ReportEntry report )
     {
-        TestMethod testMethod = getTestMethod();
-        if ( null != testMethod )
+        TestMethod testMethod = getThreadTestMethod();
+        if ( testMethod != null )
         {
             testMethod.testFinished();
             testMethod.getTestSet().incrementFinishedTests( getRunListener(), reportImmediately );
@@ -151,7 +150,7 @@ public abstract class ConcurrentRunListener
 
     private TestMethod getOrCreateThreadAttachedTestMethod( ReportEntry description )
     {
-        TestMethod threadTestMethod = TestMethod.getThreadTestMethod();
+        TestMethod threadTestMethod = getThreadTestMethod();
         if ( threadTestMethod != null )
         {
             return threadTestMethod;
@@ -159,8 +158,12 @@ public abstract class ConcurrentRunListener
         TestSet testSet = getTestSet( description );
         if ( testSet == null )
         {
-            consoleLogger.info( description.getName() );
-            consoleLogger.info( description.getStackTraceWriter().writeTraceToString() );
+            consoleStream.println( description.getName() );
+            StackTraceWriter writer = description.getStackTraceWriter();
+            if ( writer != null )
+            {
+                consoleStream.println( writer.writeTraceToString() );
+            }
             return null;
         }
         else
@@ -171,11 +174,6 @@ public abstract class ConcurrentRunListener
 
     protected abstract void checkIfTestSetCanBeReported( TestSet testSetForTest );
 
-    TestMethod getTestMethod()
-    {
-        return TestMethod.getThreadTestMethod();
-    }
-
     TestSet getTestSet( ReportEntry description )
     {
         return classMethodCounts.get( description.getSourceName() );
@@ -189,27 +187,27 @@ public abstract class ConcurrentRunListener
     public static ConcurrentRunListener createInstance( Map<String, TestSet> classMethodCounts,
                                                             ReporterFactory reporterFactory,
                                                             boolean parallelClasses, boolean parallelBoth,
-                                                            ConsoleLogger consoleLogger )
+                                                            ConsoleStream consoleStream )
         throws TestSetFailedException
     {
         return parallelClasses
-            ? new ClassesParallelRunListener( classMethodCounts, reporterFactory, consoleLogger )
-            : new MethodsParallelRunListener( classMethodCounts, reporterFactory, !parallelBoth, consoleLogger );
+            ? new ClassesParallelRunListener( classMethodCounts, reporterFactory, consoleStream )
+            : new MethodsParallelRunListener( classMethodCounts, reporterFactory, !parallelBoth, consoleStream );
     }
 
 
     public void writeTestOutput( byte[] buf, int off, int len, boolean stdout )
     {
-        TestMethod threadTestMethod = TestMethod.getThreadTestMethod();
+        TestMethod threadTestMethod = getThreadTestMethod();
         if ( threadTestMethod != null )
         {
-            final LogicalStream logicalStream = threadTestMethod.getLogicalStream();
+            LogicalStream logicalStream = threadTestMethod.getLogicalStream();
             logicalStream.write( stdout, buf, off, len );
         }
         else
         {
-            // Not able to assocaite output with any thread. Just dump to console
-            consoleLogger.info( new String( buf, off, len ) );
+            // Not able to associate output with any thread. Just dump to console
+            consoleStream.println( buf, off, len );
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
index 473da2a..0f41b6f 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
@@ -30,7 +30,7 @@ import org.apache.maven.surefire.common.junit48.JUnit48Reflector;
 import org.apache.maven.surefire.common.junit48.JUnit48TestChecker;
 import org.apache.maven.surefire.providerapi.AbstractProvider;
 import org.apache.maven.surefire.providerapi.ProviderParameters;
-import org.apache.maven.surefire.report.ConsoleLogger;
+import org.apache.maven.surefire.report.ConsoleStream;
 import org.apache.maven.surefire.report.ReporterFactory;
 import org.apache.maven.surefire.suite.RunResult;
 import org.apache.maven.surefire.testset.TestListResolver;
@@ -119,14 +119,12 @@ public class JUnitCoreProvider
     {
         final ReporterFactory reporterFactory = providerParameters.getReporterFactory();
 
-        final RunResult runResult;
-
-        final ConsoleLogger consoleLogger = providerParameters.getConsoleLogger();
+        final ConsoleStream consoleStream = providerParameters.getConsoleLogger();
 
         Filter filter = jUnit48Reflector.isJUnit48Available() ? createJUnit48Filter() : null;
 
         Notifier notifier =
-            new Notifier( createRunListener( reporterFactory, consoleLogger ), getSkipAfterFailureCount() );
+            new Notifier( createRunListener( reporterFactory, consoleStream ), getSkipAfterFailureCount() );
         // startCapture() called in createRunListener() in prior to setTestsToRun()
 
         if ( testsToRun == null )
@@ -143,9 +141,11 @@ public class JUnitCoreProvider
             registerPleaseStopJUnitListener( notifier );
         }
 
+        final RunResult runResult;
+
         try
         {
-            JUnitCoreWrapper core = new JUnitCoreWrapper( notifier, jUnitCoreParameters, consoleLogger );
+            JUnitCoreWrapper core = new JUnitCoreWrapper( notifier, jUnitCoreParameters, consoleStream );
 
             if ( commandsReader != null )
             {
@@ -162,7 +162,7 @@ public class JUnitCoreProvider
             {
                 Notifier rerunNotifier = pureNotifier();
                 notifier.copyListenersTo( rerunNotifier );
-                JUnitCoreWrapper rerunCore = new JUnitCoreWrapper( rerunNotifier, jUnitCoreParameters, consoleLogger );
+                JUnitCoreWrapper rerunCore = new JUnitCoreWrapper( rerunNotifier, jUnitCoreParameters, consoleStream );
                 for ( int i = 0; i < rerunFailingTestsCount && !testFailureListener.getAllFailures().isEmpty(); i++ )
                 {
                     List<Failure> failures = testFailureListener.getAllFailures();
@@ -237,7 +237,7 @@ public class JUnitCoreProvider
         } );
     }
 
-    private JUnit4RunListener createRunListener( ReporterFactory reporterFactory, ConsoleLogger consoleLogger )
+    private JUnit4RunListener createRunListener( ReporterFactory reporterFactory, ConsoleStream consoleStream )
         throws TestSetFailedException
     {
         if ( isSingleThreaded() )
@@ -251,7 +251,7 @@ public class JUnitCoreProvider
             final Map<String, TestSet> testSetMap = new ConcurrentHashMap<String, TestSet>();
 
             ConcurrentRunListener listener = createInstance( testSetMap, reporterFactory, isParallelTypes(),
-                                                             isParallelMethodsAndTypes(), consoleLogger );
+                                                             isParallelMethodsAndTypes(), consoleStream );
             startCapture( listener );
 
             return new JUnitCoreRunListener( listener, testSetMap );

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java
index 21858fe..2abfa58 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java
@@ -22,7 +22,7 @@ package org.apache.maven.surefire.junitcore;
 import org.apache.maven.surefire.common.junit4.Notifier;
 import org.apache.maven.surefire.junitcore.pc.ParallelComputer;
 import org.apache.maven.surefire.junitcore.pc.ParallelComputerBuilder;
-import org.apache.maven.surefire.report.ConsoleLogger;
+import org.apache.maven.surefire.report.ConsoleStream;
 import org.apache.maven.surefire.testset.TestSetFailedException;
 import org.apache.maven.surefire.util.TestsToRun;
 import org.junit.Ignore;
@@ -54,13 +54,13 @@ final class JUnitCoreWrapper
 {
     private final Notifier notifier;
     private final JUnitCoreParameters jUnitCoreParameters;
-    private final ConsoleLogger logger;
+    private final ConsoleStream consoleStream;
 
-    JUnitCoreWrapper( Notifier notifier, JUnitCoreParameters jUnitCoreParameters, ConsoleLogger logger )
+    JUnitCoreWrapper( Notifier notifier, JUnitCoreParameters jUnitCoreParameters, ConsoleStream consoleStream )
     {
         this.notifier = notifier;
         this.jUnitCoreParameters = jUnitCoreParameters;
-        this.logger = logger;
+        this.consoleStream = consoleStream;
     }
 
     void execute( TestsToRun testsToRun, Filter filter )
@@ -151,7 +151,7 @@ final class JUnitCoreWrapper
     {
         return jUnitCoreParameters.isNoThreading()
             ? serial()
-            : new ParallelComputerBuilder( logger, jUnitCoreParameters ).buildComputer();
+            : new ParallelComputerBuilder( consoleStream, jUnitCoreParameters ).buildComputer();
     }
 
     private final class JUnitCore

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/MethodsParallelRunListener.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/MethodsParallelRunListener.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/MethodsParallelRunListener.java
index 4edc365..0e487b0 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/MethodsParallelRunListener.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/MethodsParallelRunListener.java
@@ -20,7 +20,8 @@ package org.apache.maven.surefire.junitcore;
  */
 
 import java.util.Map;
-import org.apache.maven.surefire.report.ConsoleLogger;
+
+import org.apache.maven.surefire.report.ConsoleStream;
 import org.apache.maven.surefire.report.ReporterFactory;
 import org.apache.maven.surefire.testset.TestSetFailedException;
 
@@ -36,10 +37,10 @@ public class MethodsParallelRunListener
     private final Object lock = new Object();
 
     public MethodsParallelRunListener( Map<String, TestSet> classMethodCounts, ReporterFactory reporterFactory,
-                                       boolean reportImmediately, ConsoleLogger consoleLogger )
+                                       boolean reportImmediately, ConsoleStream consoleStream )
         throws TestSetFailedException
     {
-        super( reporterFactory, consoleLogger, reportImmediately, classMethodCounts );
+        super( reporterFactory, consoleStream, reportImmediately, classMethodCounts );
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/AbstractThreadPoolStrategy.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/AbstractThreadPoolStrategy.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/AbstractThreadPoolStrategy.java
index 17db2ba..5eb7715 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/AbstractThreadPoolStrategy.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/AbstractThreadPoolStrategy.java
@@ -19,7 +19,7 @@ package org.apache.maven.surefire.junitcore.pc;
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleLogger;
+import org.apache.maven.surefire.report.ConsoleStream;
 
 import java.util.Collection;
 import java.util.concurrent.ExecutorService;
@@ -47,12 +47,12 @@ abstract class AbstractThreadPoolStrategy
 
     private volatile boolean isDestroyed;
 
-    AbstractThreadPoolStrategy( ConsoleLogger logger, ExecutorService threadPool )
+    AbstractThreadPoolStrategy( ConsoleStream logger, ExecutorService threadPool )
     {
         this( logger, threadPool, null );
     }
 
-    AbstractThreadPoolStrategy( ConsoleLogger logger, ExecutorService threadPool, Collection<Future<?>> futureResults )
+    AbstractThreadPoolStrategy( ConsoleStream logger, ExecutorService threadPool, Collection<Future<?>> futureResults )
     {
         super( logger );
         this.threadPool = threadPool;

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/InvokerStrategy.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/InvokerStrategy.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/InvokerStrategy.java
index 3f95915..cc1a040 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/InvokerStrategy.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/InvokerStrategy.java
@@ -19,7 +19,7 @@ package org.apache.maven.surefire.junitcore.pc;
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleLogger;
+import org.apache.maven.surefire.report.ConsoleStream;
 
 import java.util.Queue;
 import java.util.concurrent.ConcurrentLinkedQueue;
@@ -37,7 +37,7 @@ final class InvokerStrategy
 
     private final Queue<Thread> activeThreads = new ConcurrentLinkedQueue<Thread>();
 
-    protected InvokerStrategy( ConsoleLogger logger )
+    protected InvokerStrategy( ConsoleStream logger )
     {
         super( logger );
     }

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/NonSharedThreadPoolStrategy.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/NonSharedThreadPoolStrategy.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/NonSharedThreadPoolStrategy.java
index 88b13d0..535011b 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/NonSharedThreadPoolStrategy.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/NonSharedThreadPoolStrategy.java
@@ -19,7 +19,7 @@ package org.apache.maven.surefire.junitcore.pc;
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleLogger;
+import org.apache.maven.surefire.report.ConsoleStream;
 
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.TimeUnit;
@@ -34,7 +34,7 @@ import java.util.concurrent.TimeUnit;
 final class NonSharedThreadPoolStrategy
     extends AbstractThreadPoolStrategy
 {
-    NonSharedThreadPoolStrategy( ConsoleLogger logger, ExecutorService threadPool )
+    NonSharedThreadPoolStrategy( ConsoleStream logger, ExecutorService threadPool )
     {
         super( logger, threadPool );
     }

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilder.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilder.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilder.java
index d407baa..0b35765 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilder.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilder.java
@@ -35,7 +35,7 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.ThreadFactory;
 
 import org.apache.maven.surefire.junitcore.JUnitCoreParameters;
-import org.apache.maven.surefire.report.ConsoleLogger;
+import org.apache.maven.surefire.report.ConsoleStream;
 import org.apache.maven.surefire.testset.TestSetFailedException;
 import org.apache.maven.surefire.util.internal.DaemonThreadFactory;
 import org.junit.internal.runners.ErrorReportingRunner;
@@ -92,7 +92,7 @@ public final class ParallelComputerBuilder
 
     private final Map<Type, Integer> parallelGroups = new EnumMap<Type, Integer>( Type.class );
 
-    private final ConsoleLogger logger;
+    private final ConsoleStream logger;
 
     private boolean useSeparatePools;
 
@@ -109,7 +109,7 @@ public final class ParallelComputerBuilder
      * Can be used only in unit tests.
      * Do NOT call this constructor in production.
      */
-    ParallelComputerBuilder( ConsoleLogger logger )
+    ParallelComputerBuilder( ConsoleStream logger )
     {
         this.logger = logger;
         runningInTests = true;
@@ -119,7 +119,7 @@ public final class ParallelComputerBuilder
         parallelGroups.put( METHODS, 0 );
     }
 
-    public ParallelComputerBuilder( ConsoleLogger logger, JUnitCoreParameters parameters )
+    public ParallelComputerBuilder( ConsoleStream logger, JUnitCoreParameters parameters )
     {
         this( logger );
         runningInTests = false;

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/Scheduler.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/Scheduler.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/Scheduler.java
index a957340..2c87fdd 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/Scheduler.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/Scheduler.java
@@ -19,7 +19,7 @@ package org.apache.maven.surefire.junitcore.pc;
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleLogger;
+import org.apache.maven.surefire.report.ConsoleStream;
 import org.junit.runner.Description;
 import org.junit.runners.model.RunnerScheduler;
 
@@ -56,7 +56,7 @@ public class Scheduler
 
     private final Description description;
 
-    private final ConsoleLogger logger;
+    private final ConsoleStream logger;
 
     private volatile boolean shutdown = false;
 
@@ -72,7 +72,7 @@ public class Scheduler
      * You can use it with one infinite thread pool shared in strategies across all
      * suites, class runners, etc.
      */
-    public Scheduler( ConsoleLogger logger, Description description, SchedulingStrategy strategy )
+    public Scheduler( ConsoleStream logger, Description description, SchedulingStrategy strategy )
     {
         this( logger, description, strategy, -1 );
     }
@@ -81,8 +81,8 @@ public class Scheduler
      * Should be used if schedulers in parallel children and parent use one instance of bounded thread pool.
      * <p/>
      * Set this scheduler in a e.g. one suite of classes, then every individual class runner should reference
-     * {@link Scheduler(ConsoleLogger, org.junit.runner.Description, Scheduler, SchedulingStrategy)}
-     * or {@link Scheduler(ConsoleLogger, org.junit.runner.Description, Scheduler, SchedulingStrategy, int)}.
+     * {@link Scheduler(ConsoleStream, org.junit.runner.Description, Scheduler, SchedulingStrategy)}
+     * or {@link Scheduler(ConsoleStream, org.junit.runner.Description, Scheduler, SchedulingStrategy, int)}.
      *
      * @param logger current logger implementation
      * @param description description of current runner
@@ -90,7 +90,7 @@ public class Scheduler
      * @param concurrency determines maximum concurrent children scheduled a time via {@link #schedule(Runnable)}
      * @throws NullPointerException if null <tt>strategy</tt>
      */
-    public Scheduler( ConsoleLogger logger, Description description, SchedulingStrategy strategy, int concurrency )
+    public Scheduler( ConsoleStream logger, Description description, SchedulingStrategy strategy, int concurrency )
     {
         this( logger, description, strategy, BalancerFactory.createBalancer( concurrency ) );
     }
@@ -99,7 +99,7 @@ public class Scheduler
      * New instances should be used by schedulers with limited concurrency by <tt>balancer</tt>
      * against other groups of schedulers. The schedulers share one pool.
      * <p/>
-     * Unlike in {@link Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy, int)} which was
+     * Unlike in {@link Scheduler(ConsoleStream, org.junit.runner.Description, SchedulingStrategy, int)} which was
      * limiting the <tt>concurrency</tt> of children of a runner where this scheduler was set, <em>this</em>
      * <tt>balancer</tt> is limiting the concurrency of all children in runners having schedulers created by this
      * constructor.
@@ -110,7 +110,7 @@ public class Scheduler
      * @param balancer    determines maximum concurrent children scheduled a time via {@link #schedule(Runnable)}
      * @throws NullPointerException if null <tt>strategy</tt> or <tt>balancer</tt>
      */
-    public Scheduler( ConsoleLogger logger, Description description, SchedulingStrategy strategy, Balancer balancer )
+    public Scheduler( ConsoleStream logger, Description description, SchedulingStrategy strategy, Balancer balancer )
     {
         strategy.setDefaultShutdownHandler( newShutdownHandler() );
         this.logger = logger;
@@ -131,7 +131,7 @@ public class Scheduler
      * @param balancer        determines maximum concurrent children scheduled a time via {@link #schedule(Runnable)}
      * @throws NullPointerException if null <tt>masterScheduler</tt>, <tt>strategy</tt> or <tt>balancer</tt>
      */
-    public Scheduler( ConsoleLogger logger, Description description, Scheduler masterScheduler,
+    public Scheduler( ConsoleStream logger, Description description, Scheduler masterScheduler,
                       SchedulingStrategy strategy, Balancer balancer )
     {
         this( logger, description, strategy, balancer );
@@ -141,12 +141,12 @@ public class Scheduler
 
     /**
      * @param masterScheduler a reference to
-     * {@link Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy, int)}
-     *                        or {@link Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy)}
-     * @see Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy)
-     * @see Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy, int)
+     * {@link Scheduler(ConsoleStream, org.junit.runner.Description, SchedulingStrategy, int)}
+     *                        or {@link Scheduler(ConsoleStream, org.junit.runner.Description, SchedulingStrategy)}
+     * @see Scheduler(ConsoleStream, org.junit.runner.Description, SchedulingStrategy)
+     * @see Scheduler(ConsoleStream, org.junit.runner.Description, SchedulingStrategy, int)
      */
-    public Scheduler( ConsoleLogger logger, Description description, Scheduler masterScheduler,
+    public Scheduler( ConsoleStream logger, Description description, Scheduler masterScheduler,
                       SchedulingStrategy strategy, int concurrency )
     {
         this( logger, description, strategy, concurrency );
@@ -160,7 +160,7 @@ public class Scheduler
      * <p/>
      * Cached thread pool is infinite and can be always shared.
      */
-    public Scheduler( ConsoleLogger logger, Description description, Scheduler masterScheduler,
+    public Scheduler( ConsoleStream logger, Description description, Scheduler masterScheduler,
                       SchedulingStrategy strategy )
     {
         this( logger, description, masterScheduler, strategy, 0 );
@@ -215,12 +215,12 @@ public class Scheduler
         {
             stream.close();
         }
-        logger.info( out.toString() );
+        logger.println( out.toString() );
     }
 
     protected void logQuietly( String msg )
     {
-        logger.info( msg );
+        logger.println( msg );
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategies.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategies.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategies.java
index 6706951..520c312 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategies.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategies.java
@@ -19,7 +19,7 @@ package org.apache.maven.surefire.junitcore.pc;
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleLogger;
+import org.apache.maven.surefire.report.ConsoleStream;
 import org.apache.maven.surefire.util.internal.DaemonThreadFactory;
 
 import java.util.concurrent.ExecutorService;
@@ -40,7 +40,7 @@ public class SchedulingStrategies
      * @param logger current error logger
      * @return sequentially executing strategy
      */
-    public static SchedulingStrategy createInvokerStrategy( ConsoleLogger logger )
+    public static SchedulingStrategy createInvokerStrategy( ConsoleStream logger )
     {
         return new InvokerStrategy( logger );
     }
@@ -50,7 +50,7 @@ public class SchedulingStrategies
      * @param nThreads fixed pool capacity
      * @return parallel scheduling strategy
      */
-    public static SchedulingStrategy createParallelStrategy( ConsoleLogger logger, int nThreads )
+    public static SchedulingStrategy createParallelStrategy( ConsoleStream logger, int nThreads )
     {
         return new NonSharedThreadPoolStrategy( logger,
                                                 Executors.newFixedThreadPool( nThreads, DAEMON_THREAD_FACTORY ) );
@@ -60,7 +60,7 @@ public class SchedulingStrategies
      * @param logger current error logger
      * @return parallel scheduling strategy with unbounded capacity
      */
-    public static SchedulingStrategy createParallelStrategyUnbounded( ConsoleLogger logger )
+    public static SchedulingStrategy createParallelStrategyUnbounded( ConsoleStream logger )
     {
         return new NonSharedThreadPoolStrategy( logger, Executors.newCachedThreadPool( DAEMON_THREAD_FACTORY ) );
     }
@@ -78,7 +78,7 @@ public class SchedulingStrategies
      * @return parallel strategy with shared thread pool
      * @throws NullPointerException if <tt>threadPool</tt> is null
      */
-    public static SchedulingStrategy createParallelSharedStrategy( ConsoleLogger logger, ExecutorService threadPool )
+    public static SchedulingStrategy createParallelSharedStrategy( ConsoleStream logger, ExecutorService threadPool )
     {
         if ( threadPool == null )
         {

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategy.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategy.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategy.java
index b1e1fd0..ce337bc 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategy.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategy.java
@@ -19,7 +19,7 @@ package org.apache.maven.surefire.junitcore.pc;
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleLogger;
+import org.apache.maven.surefire.report.ConsoleStream;
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
@@ -43,9 +43,9 @@ public abstract class SchedulingStrategy
 
     private final AtomicBoolean canSchedule = new AtomicBoolean( true );
 
-    private final ConsoleLogger logger;
+    private final ConsoleStream logger;
 
-    protected SchedulingStrategy( ConsoleLogger logger )
+    protected SchedulingStrategy( ConsoleStream logger )
     {
         this.logger = logger;
     }
@@ -145,6 +145,6 @@ public abstract class SchedulingStrategy
         {
             stream.close();
         }
-        logger.info( out.toString() );
+        logger.println( out.toString() );
     }
 }

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SharedThreadPoolStrategy.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SharedThreadPoolStrategy.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SharedThreadPoolStrategy.java
index ff72d64..a577fdb 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SharedThreadPoolStrategy.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SharedThreadPoolStrategy.java
@@ -19,7 +19,7 @@ package org.apache.maven.surefire.junitcore.pc;
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleLogger;
+import org.apache.maven.surefire.report.ConsoleStream;
 
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ConcurrentLinkedQueue;
@@ -37,7 +37,7 @@ import java.util.concurrent.Future;
 final class SharedThreadPoolStrategy
     extends AbstractThreadPoolStrategy
 {
-    SharedThreadPoolStrategy( ConsoleLogger logger, ExecutorService threadPool )
+    SharedThreadPoolStrategy( ConsoleStream logger, ExecutorService threadPool )
     {
         super( logger, threadPool, new ConcurrentLinkedQueue<Future<?>>() );
     }

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SingleThreadScheduler.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SingleThreadScheduler.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SingleThreadScheduler.java
index 88ae625..a0f5c2d 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SingleThreadScheduler.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SingleThreadScheduler.java
@@ -19,7 +19,7 @@ package org.apache.maven.surefire.junitcore.pc;
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleLogger;
+import org.apache.maven.surefire.report.ConsoleStream;
 import org.apache.maven.surefire.util.internal.DaemonThreadFactory;
 import org.junit.runner.Description;
 import org.junit.runners.model.RunnerScheduler;
@@ -42,7 +42,7 @@ import java.util.concurrent.TimeUnit;
  */
 final class SingleThreadScheduler
 {
-    private final ConsoleLogger logger;
+    private final ConsoleStream logger;
 
     private final ExecutorService pool = newPool();
 
@@ -54,7 +54,7 @@ final class SingleThreadScheduler
         return new ThreadPoolExecutor( 1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(), tf );
     }
 
-    SingleThreadScheduler( ConsoleLogger logger )
+    SingleThreadScheduler( ConsoleStream logger )
     {
         this.logger = logger;
         SchedulingStrategy strategy = SchedulingStrategies.createParallelSharedStrategy( logger, pool );

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentRunListenerTest.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentRunListenerTest.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentRunListenerTest.java
index 24fb2da..dc504b6 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentRunListenerTest.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentRunListenerTest.java
@@ -24,7 +24,8 @@ import java.io.PrintStream;
 import java.util.HashMap;
 import java.util.Map;
 import org.apache.maven.plugin.surefire.report.DefaultReporterFactory;
-import org.apache.maven.surefire.report.DefaultConsoleReporter;
+import org.apache.maven.surefire.report.ConsoleStream;
+import org.apache.maven.surefire.report.DefaultDirectConsoleReporter;
 import org.apache.maven.surefire.report.ReporterFactory;
 import org.apache.maven.surefire.report.RunListener;
 import org.apache.maven.surefire.report.RunStatistics;
@@ -147,7 +148,7 @@ public class ConcurrentRunListenerTest
     {
         DefaultReporterFactory reporterFactory = createReporterFactory();
         HashMap<String, TestSet> classMethodCounts = new HashMap<String, TestSet>();
-        final DefaultConsoleReporter defaultConsoleReporter = new DefaultConsoleReporter( System.out );
+        final ConsoleStream defaultConsoleReporter = new DefaultDirectConsoleReporter( System.out );
         RunListener reporter =
             new ClassesParallelRunListener( classMethodCounts, reporterFactory, defaultConsoleReporter );
         JUnitCoreRunListener runListener = new JUnitCoreRunListener( reporter, classMethodCounts );
@@ -200,8 +201,8 @@ public class ConcurrentRunListenerTest
         throws TestSetFailedException
     {
         return new JUnitCoreRunListener(
-            new ClassesParallelRunListener( testSetMap, reporterFactory, new DefaultConsoleReporter( System.out ) ),
-            testSetMap );
+            new ClassesParallelRunListener( testSetMap, reporterFactory,
+                                                  new DefaultDirectConsoleReporter( System.out ) ), testSetMap );
     }
 
 

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/DefaultConsoleReporter.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/DefaultConsoleReporter.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/DefaultConsoleReporter.java
new file mode 100644
index 0000000..0c8e856
--- /dev/null
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/DefaultConsoleReporter.java
@@ -0,0 +1,68 @@
+package org.apache.maven.surefire.junitcore;
+
+/*
+ * 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.plugin.surefire.log.api.ConsoleLogger;
+
+import java.io.PrintStream;
+
+/**
+ * @author <a href="mailto:kristian@zenior.no">Kristian Rosenvold</a>
+ */
+public class DefaultConsoleReporter
+    implements ConsoleLogger
+{
+    private final PrintStream systemOut;
+
+    public DefaultConsoleReporter( PrintStream systemOut )
+    {
+        this.systemOut = systemOut;
+    }
+
+    public void debug( String message )
+    {
+
+    }
+
+    public void info( String message )
+    {
+        systemOut.println( message );
+    }
+
+    public void warning( String message )
+    {
+
+    }
+
+    public void error( String message )
+    {
+
+    }
+
+    public void error( String message, Throwable t )
+    {
+
+    }
+
+    public void error( Throwable t )
+    {
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreTester.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreTester.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreTester.java
index e021647..41ae610 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreTester.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreTester.java
@@ -20,9 +20,8 @@ package org.apache.maven.surefire.junitcore;
  */
 
 import org.apache.maven.plugin.surefire.report.DefaultReporterFactory;
-import org.apache.maven.surefire.report.ConsoleOutputCapture;
 import org.apache.maven.surefire.report.ConsoleOutputReceiver;
-import org.apache.maven.surefire.report.DefaultConsoleReporter;
+import org.apache.maven.surefire.report.DefaultDirectConsoleReporter;
 import org.apache.maven.surefire.report.ReporterFactory;
 import org.apache.maven.surefire.report.RunListener;
 import org.apache.maven.surefire.testset.TestSetFailedException;
@@ -33,6 +32,9 @@ import org.junit.runner.Result;
 import java.util.HashMap;
 import java.util.concurrent.ExecutionException;
 
+import static org.apache.maven.surefire.junitcore.ConcurrentRunListener.createInstance;
+import static org.apache.maven.surefire.report.ConsoleOutputCapture.startCapture;
+
 /**
  * @author Kristian Rosenvold
  */
@@ -58,12 +60,10 @@ public class JUnitCoreTester
 
         try
         {
-
             final HashMap<String, TestSet> classMethodCounts = new HashMap<String, TestSet>();
-            RunListener reporter =
-                ConcurrentRunListener.createInstance( classMethodCounts, reporterManagerFactory, parallelClasses, false,
-                                                      new DefaultConsoleReporter( System.out ) );
-            ConsoleOutputCapture.startCapture( (ConsoleOutputReceiver) reporter );
+            RunListener reporter = createInstance( classMethodCounts, reporterManagerFactory, parallelClasses, false,
+                                                         new DefaultDirectConsoleReporter( System.out ) );
+            startCapture( (ConsoleOutputReceiver) reporter );
 
             JUnitCoreRunListener runListener = new JUnitCoreRunListener( reporter, classMethodCounts );
             JUnitCore junitCore = new JUnitCore();

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Logger.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Logger.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Logger.java
deleted file mode 100644
index 4fff4b0..0000000
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Logger.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.apache.maven.surefire.junitcore;
-
-/*
- * 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.report.ConsoleLogger;
-
-public final class Logger implements ConsoleLogger
-{
-    public void info( String message )
-    {
-        System.out.println( message );
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java
index 0ee4269..3e9ca93 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java
@@ -20,14 +20,14 @@ package org.apache.maven.surefire.junitcore;
 import java.io.File;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
+
 import org.apache.maven.plugin.surefire.report.DefaultReporterFactory;
 import org.apache.maven.surefire.booter.BaseProviderFactory;
 import org.apache.maven.surefire.booter.ProviderParameterNames;
 import org.apache.maven.surefire.common.junit4.JUnit4RunListener;
 import org.apache.maven.surefire.common.junit4.Notifier;
 import org.apache.maven.surefire.junit4.MockReporter;
-import org.apache.maven.surefire.report.ConsoleLogger;
-import org.apache.maven.surefire.report.DefaultConsoleReporter;
+import org.apache.maven.surefire.report.DefaultDirectConsoleReporter;
 import org.apache.maven.surefire.report.ReporterConfiguration;
 import org.apache.maven.surefire.report.ReporterFactory;
 import org.apache.maven.surefire.report.RunListener;
@@ -89,7 +89,6 @@ public class Surefire746Test
     {
         ReporterFactory reporterFactory = DefaultReporterFactory.defaultNoXml();
         BaseProviderFactory providerParameters = new BaseProviderFactory( reporterFactory, true );
-        ConsoleLogger consoleLogger = new DefaultConsoleReporter( System.out );
 
         providerParameters.setReporterConfiguration( new ReporterConfiguration( new File( "" ), false ) );
         Map<String, String> junitProps = new HashMap<String, String>();
@@ -100,7 +99,8 @@ public class Surefire746Test
         final Map<String, TestSet> testSetMap = new ConcurrentHashMap<String, TestSet>();
 
         RunListener listener =
-            ConcurrentRunListener.createInstance( testSetMap, reporterFactory, false, false, consoleLogger );
+            ConcurrentRunListener.createInstance( testSetMap, reporterFactory, false, false,
+                                                        new DefaultDirectConsoleReporter( System.out ) );
 
         TestsToRun testsToRun = new TestsToRun( Collections.<Class<?>>singleton( TestClassTest.class ) );
 
@@ -116,7 +116,8 @@ public class Surefire746Test
             // and rethrows a failure which happened in listener
             exception.expect( TestSetFailedException.class );
             JUnit4RunListener dummy = new JUnit4RunListener( new MockReporter() );
-            new JUnitCoreWrapper( new Notifier( dummy, 0 ), jUnitCoreParameters, new Logger() )
+            new JUnitCoreWrapper( new Notifier( dummy, 0 ), jUnitCoreParameters,
+                                        new DefaultDirectConsoleReporter( System.out ) )
                 .execute( testsToRun, customRunListeners, null );
         }
         finally

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilderTest.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilderTest.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilderTest.java
index aca5d68..5184cdd 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilderTest.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilderTest.java
@@ -20,7 +20,8 @@ package org.apache.maven.surefire.junitcore.pc;
  */
 
 import net.jcip.annotations.NotThreadSafe;
-import org.apache.maven.surefire.junitcore.Logger;
+import org.apache.maven.surefire.report.ConsoleStream;
+import org.apache.maven.surefire.report.DefaultDirectConsoleReporter;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -63,6 +64,8 @@ public class ParallelComputerBuilderTest
 
     private static volatile Runnable shutdownTask;
 
+    private static final ConsoleStream logger = new DefaultDirectConsoleReporter( System.out );
+
     @Rule
     public final Stopwatch stopwatch = new Stopwatch() {};
 
@@ -103,7 +106,7 @@ public class ParallelComputerBuilderTest
     @Test
     public void parallelMethodsReuseOneOrTwoThreads()
     {
-        ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() );
+        ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( logger );
         parallelComputerBuilder.useOnePool( 4 );
 
         // One thread because one suite: TestSuite, however the capacity is 5.
@@ -146,7 +149,7 @@ public class ParallelComputerBuilderTest
     @Test
     public void suiteAndClassInOnePool()
     {
-        ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() );
+        ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( logger );
         parallelComputerBuilder.useOnePool( 5 );
         parallelComputerBuilder.parallelSuites( 5 );
         parallelComputerBuilder.parallelClasses( 5 );
@@ -172,7 +175,7 @@ public class ParallelComputerBuilderTest
     public void onePoolWithUnlimitedParallelMethods()
     {
         // see ParallelComputerBuilder Javadoc
-        ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() );
+        ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( logger );
         parallelComputerBuilder.useOnePool( 8 );
         parallelComputerBuilder.parallelSuites( 2 );
         parallelComputerBuilder.parallelClasses( 4 );
@@ -197,7 +200,7 @@ public class ParallelComputerBuilderTest
     @Test
     public void underflowParallelism()
     {
-        ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() );
+        ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( logger );
         parallelComputerBuilder.useOnePool( 3 );
 
         // One thread because one suite: TestSuite.
@@ -229,7 +232,7 @@ public class ParallelComputerBuilderTest
     @Test
     public void separatePoolsWithSuite()
     {
-        ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() );
+        ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( logger );
         parallelComputerBuilder.parallelSuites( 5 );
         parallelComputerBuilder.parallelClasses( 5 );
         parallelComputerBuilder.parallelMethods( 3 );
@@ -253,7 +256,7 @@ public class ParallelComputerBuilderTest
     @Test
     public void separatePoolsWithSuiteAndClass()
     {
-        ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() );
+        ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( logger );
         parallelComputerBuilder.parallelSuites( 5 );
         parallelComputerBuilder.parallelClasses( 5 );
         parallelComputerBuilder.parallelMethods( 3 );
@@ -280,7 +283,7 @@ public class ParallelComputerBuilderTest
     @Test
     public void separatePoolsWithSuiteAndSequentialClasses()
     {
-        ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() );
+        ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( logger );
         parallelComputerBuilder.parallelSuites( 5 );
         parallelComputerBuilder.parallelClasses( 1 );
         parallelComputerBuilder.parallelMethods( 3 );
@@ -324,7 +327,7 @@ public class ParallelComputerBuilderTest
     public void nothingParallel()
     {
         JUnitCore core = new JUnitCore();
-        ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() );
+        ParallelComputerBuilder builder = new ParallelComputerBuilder( logger );
         assertFalse( builder.isOptimized() );
 
         Result result = core.run( builder.buildComputer(), NothingDoingTest1.class, NothingDoingTest2.class );
@@ -377,7 +380,7 @@ public class ParallelComputerBuilderTest
     @Test
     public void keepBeforeAfterOneClass()
     {
-        ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() );
+        ParallelComputerBuilder builder = new ParallelComputerBuilder( logger );
         builder.parallelMethods();
         assertFalse( builder.isOptimized() );
         testKeepBeforeAfter( builder, NothingDoingTest1.class );
@@ -386,7 +389,7 @@ public class ParallelComputerBuilderTest
     @Test
     public void keepBeforeAfterTwoClasses()
     {
-        ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() );
+        ParallelComputerBuilder builder = new ParallelComputerBuilder( logger );
         builder.useOnePool( 5 ).parallelClasses( 1 ).parallelMethods( 2 );
         assertFalse( builder.isOptimized() );
         testKeepBeforeAfter( builder, NothingDoingTest1.class, NothingDoingTest2.class );
@@ -395,7 +398,7 @@ public class ParallelComputerBuilderTest
     @Test
     public void keepBeforeAfterTwoParallelClasses()
     {
-        ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() );
+        ParallelComputerBuilder builder = new ParallelComputerBuilder( logger );
         builder.useOnePool( 8 ).parallelClasses( 2 ).parallelMethods( 2 );
         assertFalse( builder.isOptimized() );
         JUnitCore core = new JUnitCore();
@@ -411,7 +414,7 @@ public class ParallelComputerBuilderTest
     @Test
     public void notThreadSafeTest()
     {
-        ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() )
+        ParallelComputerBuilder builder = new ParallelComputerBuilder( logger )
             .useOnePool( 6 ).optimize( true ).parallelClasses( 3 ).parallelMethods( 3 );
         ParallelComputerBuilder.PC computer = (ParallelComputerBuilder.PC) builder.buildComputer();
         Result result = new JUnitCore().run( computer, NotThreadSafeTest1.class, NotThreadSafeTest2.class );
@@ -432,7 +435,7 @@ public class ParallelComputerBuilderTest
     @Test
     public void mixedThreadSafety()
     {
-        ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() )
+        ParallelComputerBuilder builder = new ParallelComputerBuilder( logger )
             .useOnePool( 6 ).optimize( true ).parallelClasses( 3 ).parallelMethods( 3 );
         ParallelComputerBuilder.PC computer = (ParallelComputerBuilder.PC) builder.buildComputer();
         Result result = new JUnitCore().run( computer, NotThreadSafeTest1.class, NormalTest1.class );
@@ -454,7 +457,7 @@ public class ParallelComputerBuilderTest
     @Test
     public void notThreadSafeTestsInSuite()
     {
-        ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() )
+        ParallelComputerBuilder builder = new ParallelComputerBuilder( logger )
             .useOnePool( 5 ).parallelMethods( 3 );
         assertFalse( builder.isOptimized() );
         ParallelComputerBuilder.PC computer = (ParallelComputerBuilder.PC) builder.buildComputer();
@@ -477,7 +480,7 @@ public class ParallelComputerBuilderTest
     @Test
     public void mixedThreadSafetyInSuite()
     {
-        ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() )
+        ParallelComputerBuilder builder = new ParallelComputerBuilder( logger )
             .useOnePool( 10 ).optimize( true ).parallelSuites( 2 ).parallelClasses( 3 ).parallelMethods( 3 );
         ParallelComputerBuilder.PC computer = (ParallelComputerBuilder.PC) builder.buildComputer();
         Result result = new JUnitCore().run( computer, MixedSuite.class );
@@ -499,7 +502,7 @@ public class ParallelComputerBuilderTest
     @Test
     public void inheritanceWithNotThreadSafe()
     {
-        ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() )
+        ParallelComputerBuilder builder = new ParallelComputerBuilder( logger )
             .useOnePool( 10 ).optimize( true ).parallelSuites( 2 ).parallelClasses( 3 ).parallelMethods( 3 );
         ParallelComputerBuilder.PC computer = (ParallelComputerBuilder.PC) builder.buildComputer();
         Result result = new JUnitCore().run( computer, OverMixedSuite.class );
@@ -529,7 +532,7 @@ public class ParallelComputerBuilderTest
             TimeUnit.MILLISECONDS.sleep( 500 );
         }
         Collection<Thread> expectedThreads = jvmThreads();
-        ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() );
+        ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( logger );
         parallelComputerBuilder.parallelMethods( 3 );
         ParallelComputer computer = parallelComputerBuilder.buildComputer();
         Result result = new JUnitCore().run( computer, TestWithBeforeAfter.class );
@@ -564,7 +567,7 @@ public class ParallelComputerBuilderTest
     {
         Result run( final boolean useInterrupt )
         {
-            ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() )
+            ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( logger )
                 .useOnePool( 8 )
                 .parallelSuites( 2 )
                 .parallelClasses( 3 )

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6a79127a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtilTest.java
----------------------------------------------------------------------
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtilTest.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtilTest.java
index a19c8c8..15daac9 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtilTest.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtilTest.java
@@ -20,7 +20,8 @@ package org.apache.maven.surefire.junitcore.pc;
  */
 
 import org.apache.maven.surefire.junitcore.JUnitCoreParameters;
-import org.apache.maven.surefire.junitcore.Logger;
+import org.apache.maven.surefire.report.ConsoleStream;
+import org.apache.maven.surefire.report.DefaultDirectConsoleReporter;
 import org.apache.maven.surefire.testset.TestSetFailedException;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -58,6 +59,8 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS;
 @RunWith( Theories.class )
 public final class ParallelComputerUtilTest
 {
+    private final ConsoleStream logger = new DefaultDirectConsoleReporter( System.out );
+
     @DataPoint
     public static final int CPU_1 = 1;
 
@@ -968,7 +971,7 @@ public final class ParallelComputerUtilTest
         properties.put(PARALLEL_KEY, "methods");
         properties.put(THREADCOUNTMETHODS_KEY, "2");
         JUnitCoreParameters params = new JUnitCoreParameters( properties );
-        ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( new Logger(), params );
+        ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( logger, params );
         ParallelComputer pc = pcBuilder.buildComputer();
         Result result = new JUnitCore().run( pc, TestClass.class );
         long timeSpent = stopwatch.runtime( MILLISECONDS );
@@ -992,7 +995,7 @@ public final class ParallelComputerUtilTest
         properties.put(THREADCOUNTMETHODS_KEY, "2");
         properties.put(PARALLEL_TIMEOUT_KEY, Double.toString(2.5d));
         JUnitCoreParameters params = new JUnitCoreParameters( properties );
-        ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( new Logger(), params );
+        ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( logger, params );
         ParallelComputer pc = pcBuilder.buildComputer();
         new JUnitCore().run( pc, TestClass.class );
         long timeSpent = stopwatch.runtime( MILLISECONDS );
@@ -1015,7 +1018,7 @@ public final class ParallelComputerUtilTest
         properties.put(THREADCOUNTMETHODS_KEY, "2");
         properties.put(PARALLEL_TIMEOUTFORCED_KEY, Double.toString(2.5d));
         JUnitCoreParameters params = new JUnitCoreParameters( properties );
-        ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( new Logger(), params );
+        ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( logger, params );
         ParallelComputer pc = pcBuilder.buildComputer();
         new JUnitCore().run( pc, TestClass.class );
         long timeSpent = stopwatch.runtime( MILLISECONDS );
@@ -1041,7 +1044,7 @@ public final class ParallelComputerUtilTest
         properties.put(PARALLEL_TIMEOUT_KEY, Double.toString(2.5d));
         properties.put(PARALLEL_TIMEOUTFORCED_KEY, Double.toString(3.5d));
         JUnitCoreParameters params = new JUnitCoreParameters( properties );
-        ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( new Logger(), params );
+        ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( logger, params );
         ParallelComputer pc = pcBuilder.buildComputer();
         new JUnitCore().run( pc, TestClass.class );
         long timeSpent = stopwatch.runtime( MILLISECONDS );
@@ -1065,7 +1068,7 @@ public final class ParallelComputerUtilTest
         properties.put(PARALLEL_TIMEOUTFORCED_KEY, Double.toString(3.5d));
         properties.put(PARALLEL_TIMEOUT_KEY, Double.toString(4.0d));
         JUnitCoreParameters params = new JUnitCoreParameters( properties );
-        ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( new Logger(), params );
+        ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( logger, params );
         ParallelComputer pc = pcBuilder.buildComputer();
         new JUnitCore().run( pc, TestClass.class );
         long timeSpent = stopwatch.runtime( MILLISECONDS );