From 23ed82acb57530d06f9ff6b819cc533389d34a56 Mon Sep 17 00:00:00 2001 From: "tibor.digana" Date: Mon, 14 Feb 2022 03:47:19 +0100 Subject: [PATCH] Removed ConsoleStream interface and used ConsoleLogger instead. Any combinations of two interfaces out of three (RunListener, TestOutputReceiver, ConsoleLogger) are avoided and the only TestReportListener is used. Simplified code around logger in JUnitCoreProvider. Renamed method in ReporterFactory. --- .../booterclient/output/ForkClient.java | 10 +- .../report/DefaultReporterFactory.java | 4 +- .../surefire/report/TestSetRunListener.java | 5 +- .../booterclient/ForkingRunListenerTest.java | 8 +- .../surefire/booterclient/MockReporter.java | 5 +- .../TestSetMockReporterFactory.java | 4 +- .../booterclient/output/ForkClientTest.java | 70 ++++----- .../report/DefaultReporterFactoryTest.java | 5 +- .../api/booter/BaseProviderFactory.java | 17 --- .../api/booter/ForkingReporterFactory.java | 4 +- .../api/booter/ForkingRunListener.java | 25 ++-- .../api/provider/ProviderParameters.java | 11 -- .../surefire/api/report/ConsoleStream.java | 28 ---- .../report/DefaultDirectConsoleReporter.java | 42 ------ .../api/report/ReporterConfiguration.java | 25 ---- .../surefire/api/report/ReporterFactory.java | 6 +- .../api/report/TestReportListener.java | 45 ++++++ .../surefire/api/report/TestRunListener.java | 28 ---- .../maven/surefire/booter/ForkedBooter.java | 9 +- .../booter/SurefireReflectorTest.java | 8 +- .../common/junit4/JUnit4RunListener.java | 12 +- .../surefire/common/junit4/MockReporter.java | 64 ++++++++- .../junitplatform/JUnitPlatformProvider.java | 2 +- .../junitplatform/RunListenerAdapter.java | 6 +- .../JUnitPlatformProviderTest.java | 30 ++-- .../junitplatform/RunListenerAdapterTest.java | 6 +- .../maven/surefire/junit/JUnit3Provider.java | 4 +- .../maven/surefire/junit4/JUnit4Provider.java | 4 +- surefire-providers/surefire-junit47/pom.xml | 100 +------------ .../src/assembly/assembly.xml | 35 ----- .../junitcore/ClassesParallelRunListener.java | 16 +-- .../junitcore/ConcurrentRunListener.java | 134 ++++++++++++------ .../surefire/junitcore/JUnitCoreProvider.java | 32 ++--- .../junitcore/JUnitCoreRunListener.java | 6 +- .../surefire/junitcore/JUnitCoreWrapper.java | 10 +- .../junitcore/MethodsParallelRunListener.java | 17 +-- .../junitcore/NonConcurrentRunListener.java | 10 +- .../maven/surefire/junitcore/TestMethod.java | 4 +- .../maven/surefire/junitcore/TestSet.java | 8 +- .../pc/AbstractThreadPoolStrategy.java | 6 +- .../junitcore/pc/InvokerStrategy.java | 4 +- .../pc/NonSharedThreadPoolStrategy.java | 4 +- .../junitcore/pc/ParallelComputerBuilder.java | 8 +- .../surefire/junitcore/pc/Scheduler.java | 41 +++--- .../junitcore/pc/SchedulingStrategies.java | 10 +- .../junitcore/pc/SchedulingStrategy.java | 15 +- .../pc/SharedThreadPoolStrategy.java | 4 +- .../junitcore/pc/SingleThreadScheduler.java | 6 +- .../junitcore/ConcurrentRunListenerTest.java | 35 ++--- .../surefire/junitcore/JUnitCoreTester.java | 7 +- .../surefire/junitcore/MockReporter.java | 64 ++++++++- .../surefire/junitcore/Surefire746Test.java | 34 ++--- .../pc/ParallelComputerBuilderTest.java | 14 +- .../pc/ParallelComputerUtilTest.java | 20 +-- .../pc/SchedulingStrategiesTest.java | 6 +- .../maven/surefire/testng/TestNGProvider.java | 4 +- 56 files changed, 518 insertions(+), 623 deletions(-) delete mode 100644 surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleStream.java delete mode 100644 surefire-api/src/main/java/org/apache/maven/surefire/api/report/DefaultDirectConsoleReporter.java create mode 100644 surefire-api/src/main/java/org/apache/maven/surefire/api/report/TestReportListener.java delete mode 100644 surefire-api/src/main/java/org/apache/maven/surefire/api/report/TestRunListener.java delete mode 100644 surefire-providers/surefire-junit47/src/assembly/assembly.xml diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java index 7963980a70..158461efc5 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java @@ -23,7 +23,7 @@ import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import org.apache.maven.plugin.surefire.report.DefaultReporterFactory; import org.apache.maven.surefire.api.event.Event; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.extensions.EventHandler; import org.apache.maven.surefire.api.booter.MasterProcessChannelEncoder; import org.apache.maven.surefire.api.report.TestOutputReceiver; @@ -79,7 +79,7 @@ public class ForkClient private final int forkNumber; - private volatile TestRunListener testSetReporter; + private volatile TestReportListener testSetReporter; /** * Written by one Thread and read by another: Main Thread and ForkStarter's Thread. @@ -380,7 +380,7 @@ public final boolean hadTimeout() /** * Only {@link #getConsoleOutputReceiver()} may call this method in another Thread. */ - private TestRunListener getTestSetReporter() + private TestReportListener getTestSetReporter() { if ( testSetReporter == null ) { @@ -388,7 +388,7 @@ private TestRunListener getTestSetReporter() { if ( testSetReporter == null ) { - testSetReporter = defaultReporterFactory.createReporter(); + testSetReporter = defaultReporterFactory.createTestReportListener(); } } } @@ -431,7 +431,7 @@ public TestOutputReceiver getConsoleOutputReceiver() private ConsoleLogger getOrCreateConsoleLogger() { - return (ConsoleLogger) getTestSetReporter(); + return getTestSetReporter(); } public void close( boolean hadTimeout ) diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java index 39dd86c76b..cf93b6bf15 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java @@ -29,7 +29,7 @@ import org.apache.maven.surefire.extensions.StatelessTestsetInfoConsoleReportEventListener; import org.apache.maven.surefire.extensions.StatelessTestsetInfoFileReportEventListener; import org.apache.maven.surefire.api.report.ReporterFactory; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.report.RunStatistics; import org.apache.maven.surefire.api.report.StackTraceWriter; import org.apache.maven.surefire.api.suite.RunResult; @@ -97,7 +97,7 @@ public DefaultReporterFactory( StartupReportConfiguration reportConfiguration, C } @Override - public TestRunListener createReporter() + public TestReportListener createTestReportListener() { TestSetRunListener testSetRunListener = new TestSetRunListener( createConsoleReporter(), diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetRunListener.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetRunListener.java index 4e6e46128d..cb81382c5d 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetRunListener.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetRunListener.java @@ -25,7 +25,6 @@ import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; -import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import org.apache.maven.plugin.surefire.runorder.StatisticsReporter; import org.apache.maven.surefire.extensions.ConsoleOutputReportEventListener; import org.apache.maven.surefire.extensions.StatelessReportEventListener; @@ -33,7 +32,7 @@ import org.apache.maven.surefire.extensions.StatelessTestsetInfoFileReportEventListener; import org.apache.maven.surefire.api.report.ReportEntry; import org.apache.maven.surefire.api.report.RunMode; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.api.report.TestSetReportEntry; import static org.apache.maven.plugin.surefire.report.ReportEntryType.ERROR; @@ -50,7 +49,7 @@ * @author Kristian Rosenvold */ public class TestSetRunListener - implements TestRunListener, ConsoleLogger + implements TestReportListener { private final Queue testMethodStats = new ConcurrentLinkedQueue<>(); diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkingRunListenerTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkingRunListenerTest.java index 1e7a06723a..6e5dbaf860 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkingRunListenerTest.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkingRunListenerTest.java @@ -39,7 +39,7 @@ import org.apache.maven.surefire.api.report.StackTraceWriter; import org.apache.maven.surefire.api.report.TestOutputReceiver; import org.apache.maven.surefire.api.report.TestSetReportEntry; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.api.util.internal.WritableBufferedByteChannel; import javax.annotation.Nonnull; @@ -173,7 +173,7 @@ public void testAssumptionFailure() throws Exception public void testConsole() throws Exception { final StandardTestRun standardTestRun = new StandardTestRun(); - ConsoleLogger directConsoleReporter = (ConsoleLogger) standardTestRun.run(); + ConsoleLogger directConsoleReporter = standardTestRun.run(); directConsoleReporter.info( "HeyYou" ); standardTestRun.assertExpected( MockReporter.CONSOLE_INFO, "HeyYou" ); } @@ -462,7 +462,7 @@ private SimpleReportEntry createReportEntryWithSpecialMessage( String message ) } } - private TestRunListener createForkingRunListener() + private TestReportListener createForkingRunListener() { WritableBufferedByteChannel channel = (WritableBufferedByteChannel) newChannel( printStream ); return new ForkingRunListener( new EventChannelEncoder( channel ), false ); @@ -472,7 +472,7 @@ private class StandardTestRun { private MockReporter reporter; - public TestRunListener run() + public TestReportListener run() throws ReporterException { reset(); diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/MockReporter.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/MockReporter.java index 337131d3e8..79c70aeb59 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/MockReporter.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/MockReporter.java @@ -19,9 +19,8 @@ * under the License. */ -import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import org.apache.maven.surefire.api.report.ReportEntry; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.api.report.TestSetReportEntry; import org.apache.maven.surefire.api.report.RunMode; @@ -33,7 +32,7 @@ * Internal tests use only. */ public class MockReporter - implements TestRunListener, ConsoleLogger + implements TestReportListener { private final List events = new ArrayList<>(); diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/TestSetMockReporterFactory.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/TestSetMockReporterFactory.java index 7b05fb032f..ff0bbb34fe 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/TestSetMockReporterFactory.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/TestSetMockReporterFactory.java @@ -25,7 +25,7 @@ import org.apache.maven.plugin.surefire.extensions.SurefireStatelessTestsetInfoReporter; import org.apache.maven.plugin.surefire.report.DefaultReporterFactory; import org.apache.maven.plugin.surefire.log.api.NullConsoleLogger; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import java.io.File; @@ -43,7 +43,7 @@ public TestSetMockReporterFactory() } @Override - public TestRunListener createReporter() + public TestReportListener createTestReportListener() { return new MockReporter(); } diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClientTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClientTest.java index fa360850ad..7822300b65 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClientTest.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClientTest.java @@ -477,14 +477,14 @@ public void shouldReceiveStdOut() when( factory.getReportsDirectory() ) .thenReturn( new File( target, "surefire-reports" ) ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); ForkClient client = new ForkClient( factory, notifiableTestStream, 0 ); client.handleEvent( new StandardStreamOutEvent( NORMAL_RUN, "msg" ) ); verifyZeroInteractions( notifiableTestStream ); verify( factory, times( 1 ) ) - .createReporter(); + .createTestReportListener(); verifyNoMoreInteractions( factory ); assertThat( client.getReporter() ) .isNotNull(); @@ -519,14 +519,14 @@ public void shouldReceiveStdOutNewLine() when( factory.getReportsDirectory() ) .thenReturn( new File( target, "surefire-reports" ) ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); ForkClient client = new ForkClient( factory, notifiableTestStream, 0 ); client.handleEvent( new StandardStreamOutWithNewLineEvent( NORMAL_RUN, "msg" ) ); verifyZeroInteractions( notifiableTestStream ); verify( factory, times( 1 ) ) - .createReporter(); + .createTestReportListener(); verifyNoMoreInteractions( factory ); assertThat( client.getReporter() ) .isNotNull(); @@ -561,14 +561,14 @@ public void shouldReceiveStdErr() when( factory.getReportsDirectory() ) .thenReturn( new File( target, "surefire-reports" ) ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); ForkClient client = new ForkClient( factory, notifiableTestStream, 0 ); client.handleEvent( new StandardStreamErrEvent( NORMAL_RUN, "msg" ) ); verifyZeroInteractions( notifiableTestStream ); verify( factory, times( 1 ) ) - .createReporter(); + .createTestReportListener(); verifyNoMoreInteractions( factory ); assertThat( client.getReporter() ) .isNotNull(); @@ -603,14 +603,14 @@ public void shouldReceiveStdErrNewLine() when( factory.getReportsDirectory() ) .thenReturn( new File( target, "surefire-reports" ) ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); ForkClient client = new ForkClient( factory, notifiableTestStream, 0 ); client.handleEvent( new StandardStreamErrWithNewLineEvent( NORMAL_RUN, "msg" ) ); verifyZeroInteractions( notifiableTestStream ); verify( factory, times( 1 ) ) - .createReporter(); + .createTestReportListener(); verifyNoMoreInteractions( factory ); assertThat( client.getReporter() ) .isNotNull(); @@ -641,7 +641,7 @@ public void shouldLogConsoleError() { DefaultReporterFactory factory = mock( DefaultReporterFactory.class ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); ForkClient client = new ForkClient( factory, notifiableTestStream, 0 ); @@ -651,7 +651,7 @@ public void shouldLogConsoleError() client.handleEvent( event ); verifyZeroInteractions( notifiableTestStream ); verify( factory, times( 1 ) ) - .createReporter(); + .createTestReportListener(); verify( factory, times( 1 ) ) .getReportsDirectory(); verifyNoMoreInteractions( factory ); @@ -733,14 +733,14 @@ public void shouldLogConsoleWarning() when( factory.getReportsDirectory() ) .thenReturn( new File( target, "surefire-reports" ) ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); ForkClient client = new ForkClient( factory, notifiableTestStream, 0 ); client.handleEvent( new ConsoleWarningEvent( "s1" ) ); verifyZeroInteractions( notifiableTestStream ); verify( factory, times( 1 ) ) - .createReporter(); + .createTestReportListener(); verifyNoMoreInteractions( factory ); assertThat( client.getReporter() ) .isNotNull(); @@ -775,14 +775,14 @@ public void shouldLogConsoleDebug() when( factory.getReportsDirectory() ) .thenReturn( new File( target, "surefire-reports" ) ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); ForkClient client = new ForkClient( factory, notifiableTestStream, 0 ); client.handleEvent( new ConsoleDebugEvent( "s1" ) ); verifyZeroInteractions( notifiableTestStream ); verify( factory, times( 1 ) ) - .createReporter(); + .createTestReportListener(); verifyNoMoreInteractions( factory ); assertThat( client.getReporter() ) .isNotNull(); @@ -817,14 +817,14 @@ public void shouldLogConsoleInfo() when( factory.getReportsDirectory() ) .thenReturn( new File( target, "surefire-reports" ) ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); ForkClient client = new ForkClient( factory, notifiableTestStream, 0 ); client.handleEvent( new ConsoleInfoEvent( "s1" ) ); verifyZeroInteractions( notifiableTestStream ); verify( factory, times( 1 ) ) - .createReporter(); + .createTestReportListener(); verifyNoMoreInteractions( factory ); assertThat( client.getReporter() ) .isNotNull(); @@ -859,7 +859,7 @@ public void shouldSendSystemProperty() when( factory.getReportsDirectory() ) .thenReturn( new File( target, "surefire-reports" ) ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); ForkClient client = new ForkClient( factory, notifiableTestStream, 0 ); @@ -899,7 +899,7 @@ public void shouldSendTestsetStartingKilled() when( factory.getReportsDirectory() ) .thenReturn( new File( target, "surefire-reports" ) ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); @@ -932,7 +932,7 @@ public void shouldSendTestsetStartingKilled() verify( notifiableTestStream ) .shutdown( Shutdown.KILL ); verifyNoMoreInteractions( notifiableTestStream ); - verify( factory ).createReporter(); + verify( factory ).createTestReportListener(); verifyNoMoreInteractions( factory ); assertThat( client.getReporter() ) .isNotNull(); @@ -994,7 +994,7 @@ public void shouldSendTestsetStarting() when( factory.getReportsDirectory() ) .thenReturn( new File( target, "surefire-reports" ) ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); @@ -1026,7 +1026,7 @@ public void shouldSendTestsetStarting() client.tryToTimeout( System.currentTimeMillis(), 1 ); verifyZeroInteractions( notifiableTestStream ); - verify( factory ).createReporter(); + verify( factory ).createTestReportListener(); verifyNoMoreInteractions( factory ); assertThat( client.getReporter() ) .isNotNull(); @@ -1090,7 +1090,7 @@ public void shouldSendTestsetCompleted() when( factory.getReportsDirectory() ) .thenReturn( new File( target, "surefire-reports" ) ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); @@ -1119,7 +1119,7 @@ public void shouldSendTestsetCompleted() client.handleEvent( new TestsetCompletedEvent( NORMAL_RUN, reportEntry ) ); verifyZeroInteractions( notifiableTestStream ); - verify( factory ).createReporter(); + verify( factory ).createTestReportListener(); verifyNoMoreInteractions( factory ); assertThat( client.getReporter() ) .isNotNull(); @@ -1183,7 +1183,7 @@ public void shouldSendTestStarting() when( factory.getReportsDirectory() ) .thenReturn( new File( target, "surefire-reports" ) ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); @@ -1212,7 +1212,7 @@ public void shouldSendTestStarting() client.handleEvent( new TestStartingEvent( NORMAL_RUN, reportEntry ) ); verifyZeroInteractions( notifiableTestStream ); - verify( factory ).createReporter(); + verify( factory ).createTestReportListener(); verifyNoMoreInteractions( factory ); assertThat( client.hasTestsInProgress() ) .isTrue(); @@ -1277,7 +1277,7 @@ public void shouldSendTestSucceeded() when( factory.getReportsDirectory() ) .thenReturn( new File( target, "surefire-reports" ) ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); @@ -1313,7 +1313,7 @@ public void shouldSendTestSucceeded() client.handleEvent( new TestSucceededEvent( NORMAL_RUN, reportEntry ) ); verifyZeroInteractions( notifiableTestStream ); - verify( factory ).createReporter(); + verify( factory ).createTestReportListener(); verifyNoMoreInteractions( factory ); assertThat( client.getReporter() ) .isNotNull(); @@ -1381,7 +1381,7 @@ public void shouldSendTestFailed() when( factory.getReportsDirectory() ) .thenReturn( new File( target, "surefire-reports" ) ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); @@ -1417,7 +1417,7 @@ public void shouldSendTestFailed() client.handleEvent( new TestFailedEvent( NORMAL_RUN, reportEntry ) ); verifyZeroInteractions( notifiableTestStream ); - verify( factory ).createReporter(); + verify( factory ).createTestReportListener(); verifyNoMoreInteractions( factory ); assertThat( client.getReporter() ) .isNotNull(); @@ -1491,7 +1491,7 @@ public void shouldSendTestSkipped() when( factory.getReportsDirectory() ) .thenReturn( new File( target, "surefire-reports" ) ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); @@ -1527,7 +1527,7 @@ public void shouldSendTestSkipped() client.handleEvent( new TestSkippedEvent( NORMAL_RUN, reportEntry ) ); verifyZeroInteractions( notifiableTestStream ); - verify( factory ).createReporter(); + verify( factory ).createTestReportListener(); verifyNoMoreInteractions( factory ); assertThat( client.getReporter() ) .isNotNull(); @@ -1599,7 +1599,7 @@ public void shouldSendTestError() when( factory.getReportsDirectory() ) .thenReturn( new File( target, "surefire-reports" ) ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); @@ -1637,7 +1637,7 @@ public void shouldSendTestError() client.handleEvent( new TestErrorEvent( NORMAL_RUN, reportEntry ) ); verifyZeroInteractions( notifiableTestStream ); - verify( factory ).createReporter(); + verify( factory ).createTestReportListener(); verifyNoMoreInteractions( factory ); assertThat( client.getReporter() ) .isNotNull(); @@ -1705,7 +1705,7 @@ public void shouldSendTestAssumptionFailure() when( factory.getReportsDirectory() ) .thenReturn( new File( target, "surefire-reports" ) ); MockReporter receiver = new MockReporter(); - when( factory.createReporter() ) + when( factory.createTestReportListener() ) .thenReturn( receiver ); NotifiableTestStream notifiableTestStream = mock( NotifiableTestStream.class ); @@ -1742,7 +1742,7 @@ public void shouldSendTestAssumptionFailure() client.handleEvent( new TestAssumptionFailureEvent( NORMAL_RUN, reportEntry ) ); verifyZeroInteractions( notifiableTestStream ); - verify( factory ).createReporter(); + verify( factory ).createTestReportListener(); verifyNoMoreInteractions( factory ); assertThat( client.getReporter() ) .isNotNull(); diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactoryTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactoryTest.java index 14e4d823e9..cb36c0d27c 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactoryTest.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactoryTest.java @@ -33,6 +33,7 @@ import org.apache.maven.plugin.surefire.extensions.SurefireStatelessReporter; import org.apache.maven.plugin.surefire.extensions.SurefireStatelessTestsetInfoReporter; import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.shared.utils.logging.MessageUtils; import org.apache.maven.surefire.report.RunStatistics; import org.apache.maven.surefire.api.report.SafeThrowable; @@ -286,7 +287,7 @@ public void testLogger() DefaultReporterFactory factory = new DefaultReporterFactory( reportConfig, reporter ); - TestSetRunListener runListener = (TestSetRunListener) factory.createReporter(); + TestReportListener runListener = factory.createTestReportListener(); assertTrue( runListener.isDebugEnabled() ); assertTrue( runListener.isInfoEnabled() ); @@ -358,7 +359,7 @@ public void testCreateReporterWithZeroStatistics() DefaultReporterFactory factory = new DefaultReporterFactory( reportConfig, reporter ); assertEquals( reportsDirectory, factory.getReportsDirectory() ); - TestSetRunListener runListener = (TestSetRunListener) factory.createReporter(); + TestSetRunListener runListener = (TestSetRunListener) factory.createTestReportListener(); Collection listeners = getInternalState( factory, "listeners" ); assertEquals( 1, listeners.size() ); assertTrue( listeners.contains( runListener ) ); diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/BaseProviderFactory.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/BaseProviderFactory.java index 9654b14977..1436e98dc6 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/BaseProviderFactory.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/BaseProviderFactory.java @@ -22,8 +22,6 @@ import org.apache.maven.surefire.api.cli.CommandLineOption; import org.apache.maven.surefire.api.provider.CommandChainReader; import org.apache.maven.surefire.api.provider.ProviderParameters; -import org.apache.maven.surefire.api.report.ConsoleStream; -import org.apache.maven.surefire.api.report.DefaultDirectConsoleReporter; import org.apache.maven.surefire.api.report.ReporterConfiguration; import org.apache.maven.surefire.api.report.ReporterFactory; import org.apache.maven.surefire.api.testset.DirectoryScannerParameters; @@ -53,8 +51,6 @@ public class BaseProviderFactory private ReporterFactory reporterFactory; - private MasterProcessChannelEncoder masterProcessChannelEncoder; - private List mainCliOptions = emptyList(); private Map providerProperties; @@ -148,14 +144,6 @@ public void setClassLoaders( ClassLoader testClassLoader ) this.testClassLoader = testClassLoader; } - @Override - public ConsoleStream getConsoleLogger() - { - return insideFork - ? new ForkingRunListener( masterProcessChannelEncoder, reporterConfiguration.isTrimStackTrace() ) - : new DefaultDirectConsoleReporter( reporterConfiguration.getOriginalSystemOut() ); - } - public void setTestRequest( TestRequest testRequest ) { this.testRequest = testRequest; @@ -260,9 +248,4 @@ public void setSystemExitTimeout( Integer systemExitTimeout ) { this.systemExitTimeout = systemExitTimeout; } - - public void setForkedChannelEncoder( MasterProcessChannelEncoder masterProcessChannelEncoder ) - { - this.masterProcessChannelEncoder = masterProcessChannelEncoder; - } } diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingReporterFactory.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingReporterFactory.java index e53eeb4514..cf7ad5b918 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingReporterFactory.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingReporterFactory.java @@ -20,7 +20,7 @@ */ import org.apache.maven.surefire.api.report.ReporterFactory; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.api.suite.RunResult; /** @@ -43,7 +43,7 @@ public ForkingReporterFactory( boolean trimstackTrace, MasterProcessChannelEncod } @Override - public TestRunListener createReporter() + public TestReportListener createTestReportListener() { return new ForkingRunListener( eventChannel, trimstackTrace ); } diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingRunListener.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingRunListener.java index 0a44cfc455..1ccd952f06 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingRunListener.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingRunListener.java @@ -19,9 +19,7 @@ * under the License. */ -import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; -import org.apache.maven.surefire.api.report.TestRunListener; -import org.apache.maven.surefire.api.report.ConsoleStream; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.api.report.ReportEntry; import org.apache.maven.surefire.api.report.RunMode; import org.apache.maven.surefire.api.report.TestSetReportEntry; @@ -30,27 +28,26 @@ import static java.util.Objects.requireNonNull; /** - * Encodes the full output of the test run to the stdout stream. + * Encodes the full output of the test run to the "target". *
* This class and the ForkClient contain the full definition of the * "wire-level" protocol used by the forked process. The protocol * is *not* part of any public api and may change without further * notice. *
- * This class is threadsafe. + * This class is thread-safe. *
- * The synchronization in the underlying PrintStream (target instance) - * is used to preserve thread safety of the output stream. To perform - * multiple writes/prints for a single request, they must - * synchronize on "target.out" variable in this class. + * The synchronization in the underlying (target instance) + * is used to preserve thread safety of the target stream. + * To perform multiple writes/prints for a single request, + * they must synchronize on "target" variable in this class. * * @author Kristian Rosenvold */ public class ForkingRunListener - implements TestRunListener, ConsoleLogger, ConsoleStream + implements TestReportListener { private final MasterProcessChannelEncoder target; - private final boolean trim; private volatile RunMode runMode = NORMAL_RUN; @@ -196,10 +193,4 @@ public void error( Throwable t ) { error( null, t ); } - - @Override - public void println( String message ) - { - writeTestOutput( message, true, true ); - } } diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/provider/ProviderParameters.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/provider/ProviderParameters.java index 048622f897..34a2ffa689 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/api/provider/ProviderParameters.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/provider/ProviderParameters.java @@ -20,7 +20,6 @@ */ import org.apache.maven.surefire.api.cli.CommandLineOption; -import org.apache.maven.surefire.api.report.ConsoleStream; import org.apache.maven.surefire.api.report.ReporterConfiguration; import org.apache.maven.surefire.api.report.ReporterFactory; import org.apache.maven.surefire.api.testset.DirectoryScannerParameters; @@ -77,16 +76,6 @@ public interface ProviderParameters */ ReporterFactory getReporterFactory(); - /** - * Gets a logger intended for console output. - *
- * This output is intended for provider-oriented messages that are not attached to a single test-set - * and will normally be written to something console-like immediately. - * - * @return A console stream logger - */ - ConsoleStream getConsoleLogger(); - /** * The raw parameters used in creating the directory scanner * diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleStream.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleStream.java deleted file mode 100644 index 269b68f78a..0000000000 --- a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleStream.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.apache.maven.surefire.api.report; - -/* - * 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. - */ - -/** - * Delegates to {@link System#out}. - */ -public interface ConsoleStream -{ - void println( String message ); -} diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/DefaultDirectConsoleReporter.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/DefaultDirectConsoleReporter.java deleted file mode 100644 index b3a4c1cdff..0000000000 --- a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/DefaultDirectConsoleReporter.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.apache.maven.surefire.api.report; - -/* - * 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; - -/** - * @author Kristian Rosenvold - */ -public final class DefaultDirectConsoleReporter - implements ConsoleStream -{ - private final PrintStream systemOut; - - public DefaultDirectConsoleReporter( PrintStream systemOut ) - { - this.systemOut = systemOut; - } - - @Override - public void println( String message ) - { - systemOut.println( message ); - } -} diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterConfiguration.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterConfiguration.java index 03e7362b85..324ebbcf5b 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterConfiguration.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterConfiguration.java @@ -20,7 +20,6 @@ */ import java.io.File; -import java.io.PrintStream; /** * Bits and pieces of reporting configuration that seem to be necessary on the provider side. @@ -32,25 +31,12 @@ public class ReporterConfiguration { private final File reportsDirectory; - - private final PrintStream originalSystemOut; - - /** - * A non-null Boolean value - */ private final boolean trimStackTrace; public ReporterConfiguration( File reportsDirectory, boolean trimStackTrace ) { this.reportsDirectory = reportsDirectory; this.trimStackTrace = trimStackTrace; - - /* - * While this may seem slightly odd, when this object is constructed no user code has been run - * (including classloading), and we can be guaranteed that no-one has modified System.out/System.err. - * As soon as we start loading user code, all h*ll breaks loose in this respect. - */ - this.originalSystemOut = System.out; } /** @@ -72,15 +58,4 @@ public boolean isTrimStackTrace() { return trimStackTrace; } - - /** - * The original system out belonging to the (possibly forked) surefire process. - * Note that users of Reporter/ReporterFactory should normally not be using this. - * - * @return A printstream. - */ - public PrintStream getOriginalSystemOut() - { - return originalSystemOut; - } } diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterFactory.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterFactory.java index 1e21236a60..81b2318cd8 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterFactory.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterFactory.java @@ -29,11 +29,11 @@ public interface ReporterFactory { /** - * Creates a reporter. + * Creates a reporter listener. * - * @return A reporter instance + * @return new reporter listener instance */ - TestRunListener createReporter(); + TestReportListener createTestReportListener(); /** * Closes the factory, freeing resources allocated in the factory. diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/TestReportListener.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/TestReportListener.java new file mode 100644 index 0000000000..420de84086 --- /dev/null +++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/TestReportListener.java @@ -0,0 +1,45 @@ +package org.apache.maven.surefire.api.report; + +/* + * 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; + +/** + * This architecture has two sides (forked JVM, plugin JVM) implementing the same interface {@link TestReportListener}: + *
+ * 1. publisher - surefire fork JVM: {@link org.apache.maven.surefire.api.booter.ForkingRunListener}
+ *    registered in {@link  org.apache.maven.surefire.api.provider.SurefireProvider}
+ * 2. consumer - plugin JVM: {@code TestSetRunListener} registered in the {@code ForkClient}
+ * 
+ * Both implementations of {@link TestReportListener}, i.e. + * {@link org.apache.maven.surefire.api.booter.ForkingRunListener} and {@code TestSetRunListener} + * are decorators. They are used as delegators in interface adapters, see the implementations of + * JUnit's {@code RunListener RunListener-s}. + *
+ * The serialization of data in {@link TestReportListener} ensures that the ReportEntries are transferred + * from the fork to the plugin. + *
+ * Note: The adapters in the module surefire-junit47 are temporal and will be removed after we have fixed + * the SUREFIRE-1860 and XML reporter in SUREFIRE-1643. The adapters are a workaround of a real fix in both Jira issues. + */ +public interface TestReportListener + extends RunListener, TestOutputReceiver, ConsoleLogger +{ +} diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/TestRunListener.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/TestRunListener.java deleted file mode 100644 index 29eaf350de..0000000000 --- a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/TestRunListener.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.apache.maven.surefire.api.report; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/** - * - */ -public interface TestRunListener - extends RunListener, TestOutputReceiver -{ -} diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java index 6712ef16de..bd44d55c4b 100644 --- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java +++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java @@ -137,7 +137,7 @@ private void setupBooter( String tmpDir, String dumpFileName, String surefirePro flushEventChannelOnExit(); forkingReporterFactory = createForkingReporterFactory(); - logger = (ConsoleLogger) forkingReporterFactory.createReporter(); + logger = forkingReporterFactory.createTestReportListener(); commandReader = new CommandReader( decoder, providerConfiguration.getShutdown(), logger ); pingScheduler = isDebugging ? null : listenToShutdownCommands( booterDeserializer.getPluginPid() ); @@ -453,7 +453,7 @@ public void update( Command command ) private void runSuitesInProcess() throws TestSetFailedException, InvocationTargetException { - createProviderInCurrentClassloader( forkingReporterFactory ).invoke( testSet ); + createProviderInCurrentClassloader().invoke( testSet ); } private ForkingReporterFactory createForkingReporterFactory() @@ -504,14 +504,13 @@ public void run() ); } - private SurefireProvider createProviderInCurrentClassloader( ForkingReporterFactory reporterManagerFactory ) + private SurefireProvider createProviderInCurrentClassloader() { BaseProviderFactory bpf = new BaseProviderFactory( true ); - bpf.setReporterFactory( reporterManagerFactory ); + bpf.setReporterFactory( forkingReporterFactory ); bpf.setCommandReader( commandReader ); bpf.setTestRequest( providerConfiguration.getTestSuiteDefinition() ); bpf.setReporterConfiguration( providerConfiguration.getReporterConfiguration() ); - bpf.setForkedChannelEncoder( eventChannel ); ClassLoader classLoader = currentThread().getContextClassLoader(); bpf.setClassLoaders( classLoader ); bpf.setTestArtifactInfo( providerConfiguration.getTestArtifact() ); diff --git a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java index 1f275b511c..18e34a0671 100644 --- a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java +++ b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java @@ -25,7 +25,7 @@ import org.apache.maven.surefire.api.provider.SurefireProvider; import org.apache.maven.surefire.api.report.ReporterConfiguration; import org.apache.maven.surefire.api.report.ReporterFactory; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.api.suite.RunResult; import org.apache.maven.surefire.api.testset.DirectoryScannerParameters; import org.apache.maven.surefire.api.testset.RunOrderParameters; @@ -55,7 +55,7 @@ public void testShouldCreateFactoryWithoutException() ReporterFactory factory = new ReporterFactory() { @Override - public TestRunListener createReporter() + public TestReportListener createTestReportListener() { return null; } @@ -255,7 +255,7 @@ public void testReporterFactory() ReporterFactory reporterFactory = new ReporterFactory() { @Override - public TestRunListener createReporter() + public TestReportListener createTestReportListener() { return null; } @@ -279,7 +279,7 @@ public void testReporterFactoryAware() ReporterFactory reporterFactory = new ReporterFactory() { @Override - public TestRunListener createReporter() + public TestReportListener createTestReportListener() { return null; } diff --git a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java index d3163955d5..4fbfafb699 100644 --- a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java +++ b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java @@ -19,11 +19,12 @@ * under the License. */ +import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import org.apache.maven.surefire.api.report.ReportEntry; import org.apache.maven.surefire.api.report.SimpleReportEntry; import org.apache.maven.surefire.api.report.StackTraceWriter; import org.apache.maven.surefire.api.report.TestOutputReceiver; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.api.testset.TestSetFailedException; import org.apache.maven.surefire.api.util.internal.ClassMethod; import org.junit.runner.Description; @@ -46,7 +47,7 @@ public class JUnit4RunListener extends RunListener implements TestOutputReceiver { - protected final TestRunListener reporter; + protected final TestReportListener reporter; /** * This flag is set after a failure has occurred so that a @@ -62,11 +63,16 @@ public class JUnit4RunListener * * @param reporter the reporter to log testing events to */ - public JUnit4RunListener( TestRunListener reporter ) + public JUnit4RunListener( TestReportListener reporter ) { this.reporter = reporter; } + public final ConsoleLogger getConsoleLogger() + { + return reporter; + } + // Testrun methods are not invoked when using the runner /** diff --git a/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/MockReporter.java b/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/MockReporter.java index cf543b372e..7fb8e3599c 100644 --- a/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/MockReporter.java +++ b/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/MockReporter.java @@ -21,7 +21,7 @@ import org.apache.maven.surefire.api.report.ReportEntry; import org.apache.maven.surefire.api.report.RunMode; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.api.report.TestSetReportEntry; import java.util.ArrayList; @@ -32,7 +32,7 @@ * Internal tests use only. */ final class MockReporter - implements TestRunListener + implements TestReportListener { private final List events = new ArrayList<>(); @@ -132,4 +132,64 @@ public void testAssumptionFailure( ReportEntry report ) public void writeTestOutput( String output, boolean newLine, boolean stdout ) { } + + @Override + public boolean isDebugEnabled() + { + return false; + } + + @Override + public void debug( String message ) + { + + } + + @Override + public boolean isInfoEnabled() + { + return false; + } + + @Override + public void info( String message ) + { + + } + + @Override + public boolean isWarnEnabled() + { + return false; + } + + @Override + public void warning( String message ) + { + + } + + @Override + public boolean isErrorEnabled() + { + return false; + } + + @Override + public void error( String message ) + { + + } + + @Override + public void error( String message, Throwable t ) + { + + } + + @Override + public void error( Throwable t ) + { + + } } diff --git a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java index 6c4e9edded..5749e91480 100644 --- a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java +++ b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java @@ -120,7 +120,7 @@ public RunResult invoke( Object forkTestSet ) final RunResult runResult; try { - RunListenerAdapter adapter = new RunListenerAdapter( reporterFactory.createReporter() ); + RunListenerAdapter adapter = new RunListenerAdapter( reporterFactory.createTestReportListener() ); startCapture( adapter ); setupJunitLogger(); if ( forkTestSet instanceof TestsToRun ) diff --git a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java index 59f6787c91..dd482ec332 100644 --- a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java +++ b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java @@ -34,7 +34,7 @@ import java.util.regex.Pattern; import java.util.stream.Stream; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.report.PojoStackTraceWriter; import org.apache.maven.surefire.api.report.SafeThrowable; import org.apache.maven.surefire.api.report.SimpleReportEntry; @@ -59,10 +59,10 @@ final class RunListenerAdapter private final ConcurrentMap testStartTime = new ConcurrentHashMap<>(); private final ConcurrentMap failures = new ConcurrentHashMap<>(); private final ConcurrentMap runningTestIdentifiersByUniqueId = new ConcurrentHashMap<>(); - private final TestRunListener runListener; + private final TestReportListener runListener; private volatile TestPlan testPlan; - RunListenerAdapter( TestRunListener runListener ) + RunListenerAdapter( TestReportListener runListener ) { this.runListener = runListener; } diff --git a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProviderTest.java b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProviderTest.java index a6ad81b188..7ef4f5e39f 100644 --- a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProviderTest.java +++ b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProviderTest.java @@ -60,7 +60,7 @@ import org.apache.maven.surefire.api.report.ReporterFactory; import org.apache.maven.surefire.api.report.RunListener; import org.apache.maven.surefire.api.report.SimpleReportEntry; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.api.report.TestSetReportEntry; import org.apache.maven.surefire.api.testset.TestListResolver; import org.apache.maven.surefire.api.testset.TestRequest; @@ -96,7 +96,7 @@ public void shouldFailClassOnBeforeAll() { Launcher launcher = LauncherFactory.create(); JUnitPlatformProvider provider = new JUnitPlatformProvider( providerParametersMock(), launcher ); - TestRunListener listener = mock( TestRunListener.class ); + TestReportListener listener = mock( TestReportListener.class ); ArgumentCaptor testCaptor = ArgumentCaptor.forClass( ReportEntry.class ); ArgumentCaptor testSetCaptor = ArgumentCaptor.forClass( TestSetReportEntry.class ); @@ -143,7 +143,7 @@ public void shouldErrorClassOnBeforeAll() { Launcher launcher = LauncherFactory.create(); JUnitPlatformProvider provider = new JUnitPlatformProvider( providerParametersMock(), launcher ); - TestRunListener listener = mock( TestRunListener.class ); + TestReportListener listener = mock( TestReportListener.class ); ArgumentCaptor testCaptor = ArgumentCaptor.forClass( ReportEntry.class ); ArgumentCaptor testSetCaptor = ArgumentCaptor.forClass( TestSetReportEntry.class ); @@ -427,7 +427,7 @@ public void runDisplayNameTest() throws Exception ProviderParameters parameters = providerParametersMock(); JUnitPlatformProvider provider = new JUnitPlatformProvider( parameters, launcher ); - TestRunListener listener = mock( TestRunListener.class ); + TestReportListener listener = mock( TestReportListener.class ); ArgumentCaptor entryCaptor = ArgumentCaptor.forClass( ReportEntry.class ); RunListenerAdapter adapter = new RunListenerAdapter( listener ); @@ -457,7 +457,7 @@ public void detectErroredParameterized() TestPlanSummaryListener executionListener = new TestPlanSummaryListener(); - TestRunListener listener = mock( TestRunListener.class ); + TestReportListener listener = mock( TestReportListener.class ); ArgumentCaptor entryCaptor = ArgumentCaptor.forClass( ReportEntry.class ); RunListenerAdapter adapter = new RunListenerAdapter( listener ); @@ -495,7 +495,7 @@ public void detectFailedParameterized() TestPlanSummaryListener executionListener = new TestPlanSummaryListener(); - TestRunListener listener = mock( TestRunListener.class ); + TestReportListener listener = mock( TestReportListener.class ); ArgumentCaptor entryCaptor = ArgumentCaptor.forClass( ReportEntry.class ); RunListenerAdapter adapter = new RunListenerAdapter( listener ); @@ -538,7 +538,7 @@ public void rerunParameterized() TestPlanSummaryListener executionListener = new TestPlanSummaryListener(); - TestRunListener listener = mock( TestRunListener.class ); + TestReportListener listener = mock( TestReportListener.class ); ArgumentCaptor entryCaptor = ArgumentCaptor.forClass( ReportEntry.class ); RunListenerAdapter adapter = new RunListenerAdapter( listener ); @@ -598,7 +598,7 @@ public void rerunParameterized() public void allDiscoveredTestsAreInvokedForNullArgument() throws Exception { - TestRunListener runListener = runListenerMock(); + TestReportListener runListener = runListenerMock(); ProviderParameters providerParameters = providerParametersMock( runListener, TestClass1.class, TestClass2.class ); Launcher launcher = LauncherFactory.create(); @@ -662,7 +662,7 @@ public void outputIsCaptured() throws Exception { Launcher launcher = LauncherFactory.create(); - TestRunListener runListener = runListenerMock(); + TestReportListener runListener = runListenerMock(); JUnitPlatformProvider provider = new JUnitPlatformProvider( providerParametersMock( runListener ), launcher ); invokeProvider( provider, VerboseTestClass.class ); @@ -986,7 +986,7 @@ private static ProviderParameters providerParametersMock( Class... testClasse } private static ProviderParameters providerParametersMock( - TestRunListener runListener, Class... testClasses ) + TestReportListener runListener, Class... testClasses ) { TestListResolver testListResolver = new TestListResolver( "" ); return providerParametersMock( runListener, testListResolver, testClasses ); @@ -999,7 +999,7 @@ private static ProviderParameters providerParametersMock( } private static ProviderParameters providerParametersMock( - TestRunListener runListener, TestListResolver testListResolver, Class... testClasses ) + TestReportListener runListener, TestListResolver testListResolver, Class... testClasses ) { TestsToRun testsToRun = newTestsToRun( testClasses ); @@ -1010,7 +1010,7 @@ private static ProviderParameters providerParametersMock( when( runOrderCalculator.orderTestClasses( any() ) ).thenReturn( testsToRun ); ReporterFactory reporterFactory = mock( ReporterFactory.class ); - when( reporterFactory.createReporter() ).thenReturn( runListener ); + when( reporterFactory.createTestReportListener() ).thenReturn( runListener ); TestRequest testRequest = mock( TestRequest.class ); when( testRequest.getTestListResolver() ).thenReturn( testListResolver ); @@ -1024,9 +1024,9 @@ private static ProviderParameters providerParametersMock( return providerParameters; } - private static TestRunListener runListenerMock() + private static TestReportListener runListenerMock() { - return mock( TestRunListener.class, withSettings().extraInterfaces( TestOutputReceiver.class ) ); + return mock( TestReportListener.class, withSettings().extraInterfaces( TestOutputReceiver.class ) ); } private static Set failedTestDisplayNames( TestExecutionSummary summary ) @@ -1192,7 +1192,7 @@ public void usesClassNamesForXmlReport() TestsToRun testsToRun = newTestsToRun( Sub1Tests.class, Sub2Tests.class ); invokeProvider( jUnitPlatformProvider, testsToRun ); - RunListener reporter = providerParameters.getReporterFactory().createReporter(); + RunListener reporter = providerParameters.getReporterFactory().createTestReportListener(); ArgumentCaptor reportEntryArgumentCaptor = ArgumentCaptor.forClass( ReportEntry.class ); diff --git a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTest.java b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTest.java index 10c488da83..6ca778f2eb 100644 --- a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTest.java +++ b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTest.java @@ -45,7 +45,7 @@ import java.util.Map; import java.util.Optional; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.report.PojoStackTraceWriter; import org.apache.maven.surefire.api.report.ReportEntry; import org.apache.maven.surefire.api.report.SimpleReportEntry; @@ -79,14 +79,14 @@ public class RunListenerAdapterTest { private static final ConfigurationParameters CONFIG_PARAMS = mock( ConfigurationParameters.class ); - private TestRunListener listener; + private TestReportListener listener; private RunListenerAdapter adapter; @Before public void setUp() { - listener = mock( TestRunListener.class ); + listener = mock( TestReportListener.class ); adapter = new RunListenerAdapter( listener ); adapter.testPlanExecutionStarted( TestPlan.from( emptyList() ) ); } 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 1291e01598..6a049fc484 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 @@ -19,7 +19,7 @@ * under the License. */ -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.common.junit3.JUnit3Reflector; import org.apache.maven.surefire.common.junit3.JUnit3TestChecker; import org.apache.maven.surefire.api.provider.AbstractProvider; @@ -95,7 +95,7 @@ else if ( forkTestSet instanceof Class ) RunResult runResult; try { - TestRunListener reporter = reporterFactory.createReporter(); + TestReportListener reporter = reporterFactory.createTestReportListener(); startCapture( reporter ); Map systemProperties = systemProps(); setSystemManager( System.getProperty( "surefire.security.manager" ) ); diff --git a/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java b/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java index 9db1cd8b86..44cc0a1230 100644 --- a/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java +++ b/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java @@ -22,7 +22,7 @@ import org.apache.maven.surefire.api.booter.Command; import org.apache.maven.surefire.api.provider.CommandChainReader; import org.apache.maven.surefire.api.provider.CommandListener; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.common.junit4.JUnit4RunListener; import org.apache.maven.surefire.common.junit4.JUnit4TestChecker; import org.apache.maven.surefire.common.junit4.JUnitTestFailureListener; @@ -121,7 +121,7 @@ public RunResult invoke( Object forkTestSet ) RunResult runResult; try { - TestRunListener reporter = reporterFactory.createReporter(); + TestReportListener reporter = reporterFactory.createTestReportListener(); JUnit4RunListener listener = new JUnit4RunListener( reporter ); startCapture( listener ); diff --git a/surefire-providers/surefire-junit47/pom.xml b/surefire-providers/surefire-junit47/pom.xml index ddac05f92a..6e9a2bf15a 100644 --- a/surefire-providers/surefire-junit47/pom.xml +++ b/surefire-providers/surefire-junit47/pom.xml @@ -40,6 +40,7 @@ junit junit + 4.8.2 provided @@ -54,6 +55,11 @@ 1.0-1 test + + org.mockito + mockito-core + test + @@ -73,100 +79,6 @@ jacoco.agent - - maven-dependency-plugin - - - main - process-sources - - unpack - - - - - junit - junit - 4.7 - jar - true - ${project.build.directory}/endorsed-tmp - - - - - - main-junit47-patch - process-sources - - unpack - - - - - junit - junit - 4.12 - jar - true - ${project.build.directory}/endorsed-tmp - org/junit/runner/notification/RunListener* - - - - - - test - process-test-sources - - copy - - - ${project.build.directory}/endorsed-test - false - - - junit - junit - 4.12 - jar - - - - - - - - maven-assembly-plugin - - - patch-junit47 - process-sources - - single - - - false - junit-4.7 - ${project.build.directory}/endorsed - - src/assembly/assembly.xml - - - - - - - maven-compiler-plugin - - - ${project.build.directory}/endorsed - - - ${project.build.directory}/endorsed-test - - - maven-surefire-plugin diff --git a/surefire-providers/surefire-junit47/src/assembly/assembly.xml b/surefire-providers/surefire-junit47/src/assembly/assembly.xml deleted file mode 100644 index 7556763bc0..0000000000 --- a/surefire-providers/surefire-junit47/src/assembly/assembly.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - with-threadsafe-listener - - jar - - target/endorsed-tmp - false - - - true - ${project.build.directory}/endorsed-tmp - / - - - 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 73a8682728..09c0f20f63 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 @@ -19,25 +19,19 @@ * under the License. */ -import java.util.Map; - -import org.apache.maven.surefire.api.report.ConsoleStream; import org.apache.maven.surefire.api.report.ReporterFactory; -import org.apache.maven.surefire.api.testset.TestSetFailedException; -import org.junit.runner.notification.RunListener.ThreadSafe; + +import java.util.Map; /** * @author Kristian Rosenvold */ -@ThreadSafe -public class ClassesParallelRunListener +final class ClassesParallelRunListener extends ConcurrentRunListener { - public ClassesParallelRunListener( Map classMethodCounts, ReporterFactory reporterFactory, - ConsoleStream consoleStream ) - throws TestSetFailedException + ClassesParallelRunListener( Map classMethodCounts, ReporterFactory reporterFactory ) { - super( reporterFactory, consoleStream, false, classMethodCounts ); + super( reporterFactory, false, classMethodCounts ); } @Override 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 550edf18d0..51a02b901b 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,14 +20,14 @@ */ import java.util.Map; -import org.apache.maven.surefire.api.report.ConsoleStream; + +import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import org.apache.maven.surefire.api.report.ReportEntry; import org.apache.maven.surefire.api.report.ReporterFactory; import org.apache.maven.surefire.api.report.RunMode; import org.apache.maven.surefire.api.report.StackTraceWriter; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.api.report.TestSetReportEntry; -import org.apache.maven.surefire.api.testset.TestSetFailedException; import static org.apache.maven.surefire.junitcore.TestMethod.getThreadTestMethod; @@ -42,45 +42,37 @@ * @see org.apache.maven.surefire.junitcore.JUnitCoreRunListener for details about regular junit run listening * @author Kristian Rosenvold */ -public abstract class ConcurrentRunListener - implements TestRunListener +abstract class ConcurrentRunListener + implements TestReportListener { private final Map classMethodCounts; - private final ThreadLocal reporterManagerThreadLocal; + private final ThreadLocal reporterManagerThreadLocal; private final boolean reportImmediately; - private final ConsoleStream consoleStream; + private final ConsoleLogger logger; - ConcurrentRunListener( final ReporterFactory reporterFactory, ConsoleStream consoleStream, - boolean reportImmediately, Map classMethodCounts ) - throws TestSetFailedException + ConcurrentRunListener( final ReporterFactory reporterFactory, boolean reportImmediately, + Map classMethodCounts ) { this.reportImmediately = reportImmediately; this.classMethodCounts = classMethodCounts; - this.consoleStream = consoleStream; - reporterManagerThreadLocal = new ThreadLocal() - { - @Override - protected TestRunListener initialValue() - { - return reporterFactory.createReporter(); - } - }; + logger = reporterFactory.createTestReportListener(); + reporterManagerThreadLocal = ThreadLocal.withInitial( reporterFactory::createTestReportListener ); } @Override - public void testSetStarting( TestSetReportEntry description ) + public final void testSetStarting( TestSetReportEntry description ) { } @Override - public void testSetCompleted( TestSetReportEntry result ) + public final void testSetCompleted( TestSetReportEntry result ) { try { - final TestRunListener reporterManager = getRunListener(); + final TestReportListener reporterManager = getRunListener(); for ( TestSet testSet : classMethodCounts.values() ) { testSet.replay( reporterManager ); @@ -93,7 +85,7 @@ public void testSetCompleted( TestSetReportEntry result ) } @Override - public void testFailed( ReportEntry failure ) + public final void testFailed( ReportEntry failure ) { final TestMethod testMethod = getOrCreateThreadAttachedTestMethod( failure ); if ( testMethod != null ) @@ -104,7 +96,7 @@ public void testFailed( ReportEntry failure ) } @Override - public void testError( ReportEntry failure ) + public final void testError( ReportEntry failure ) { final TestMethod testMethod = getOrCreateThreadAttachedTestMethod( failure ); if ( testMethod != null ) @@ -115,7 +107,7 @@ public void testError( ReportEntry failure ) } @Override - public void testSkipped( ReportEntry description ) + public final void testSkipped( ReportEntry description ) { TestSet testSet = getTestSet( description ); TestMethod testMethod = testSet.createThreadAttachedTestMethod( description ); @@ -125,19 +117,19 @@ public void testSkipped( ReportEntry description ) } @Override - public void testExecutionSkippedByUser() + public final void testExecutionSkippedByUser() { // cannot guarantee proper call to all listeners getRunListener().testExecutionSkippedByUser(); } - public RunMode markAs( RunMode currentRunMode ) + public final RunMode markAs( RunMode currentRunMode ) { return reporterManagerThreadLocal.get().markAs( currentRunMode ); } @Override - public void testAssumptionFailure( ReportEntry failure ) + public final void testAssumptionFailure( ReportEntry failure ) { final TestMethod testMethod = getOrCreateThreadAttachedTestMethod( failure ); if ( testMethod != null ) @@ -148,7 +140,7 @@ public void testAssumptionFailure( ReportEntry failure ) } @Override - public void testStarting( ReportEntry description ) + public final void testStarting( ReportEntry description ) { TestSet testSet = getTestSet( description ); testSet.createThreadAttachedTestMethod( description ); @@ -158,7 +150,7 @@ public void testStarting( ReportEntry description ) } @Override - public void testSucceeded( ReportEntry report ) + public final void testSucceeded( ReportEntry report ) { TestMethod testMethod = getThreadTestMethod(); if ( testMethod != null ) @@ -179,11 +171,11 @@ private TestMethod getOrCreateThreadAttachedTestMethod( ReportEntry description TestSet testSet = getTestSet( description ); if ( testSet == null ) { - consoleStream.println( description.getName() ); + logger.warning( description.getName() ); StackTraceWriter writer = description.getStackTraceWriter(); if ( writer != null ) { - consoleStream.println( writer.writeTraceToString() ); + logger.error( writer.writeTraceToString() ); } return null; } @@ -200,25 +192,23 @@ private TestSet getTestSet( ReportEntry description ) return classMethodCounts.get( description.getSourceName() ); } - TestRunListener getRunListener() + final TestReportListener getRunListener() { return reporterManagerThreadLocal.get(); } - public static TestRunListener createInstance( Map classMethodCounts, - ReporterFactory reporterFactory, - boolean parallelClasses, boolean parallelBoth, - ConsoleStream consoleStream ) - throws TestSetFailedException + public static TestReportListener createInstance( Map classMethodCounts, + ReporterFactory reporterFactory, + boolean parallelClasses, boolean parallelBoth ) { return parallelClasses - ? new ClassesParallelRunListener( classMethodCounts, reporterFactory, consoleStream ) - : new MethodsParallelRunListener( classMethodCounts, reporterFactory, !parallelBoth, consoleStream ); + ? new ClassesParallelRunListener( classMethodCounts, reporterFactory ) + : new MethodsParallelRunListener( classMethodCounts, reporterFactory, !parallelBoth ); } @Override - public void writeTestOutput( String output, boolean newLine, boolean stdout ) + public final void writeTestOutput( String output, boolean newLine, boolean stdout ) { TestMethod threadTestMethod = getThreadTestMethod(); if ( threadTestMethod != null ) @@ -229,7 +219,67 @@ public void writeTestOutput( String output, boolean newLine, boolean stdout ) else { // Not able to associate output with any thread. Just dump to console - consoleStream.println( output ); + logger.info( output ); } } + + @Override + public final boolean isDebugEnabled() + { + return logger.isDebugEnabled(); + } + + @Override + public final void debug( String message ) + { + logger.debug( message ); + } + + @Override + public final boolean isInfoEnabled() + { + return logger.isInfoEnabled(); + } + + @Override + public final void info( String message ) + { + logger.info( message ); + } + + @Override + public final boolean isWarnEnabled() + { + return logger.isWarnEnabled(); + } + + @Override + public final void warning( String message ) + { + logger.warning( message ); + } + + @Override + public final boolean isErrorEnabled() + { + return logger.isErrorEnabled(); + } + + @Override + public final void error( String message ) + { + logger.error( message ); + } + + @Override + public final void error( String message, Throwable t ) + { + logger.error( message, t ); + } + + @Override + public final void error( Throwable t ) + { + logger.error( t ); + } } 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 a5752815a0..d01620cd9d 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 @@ -19,10 +19,11 @@ * under the License. */ +import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import org.apache.maven.surefire.api.booter.Command; import org.apache.maven.surefire.api.provider.CommandChainReader; import org.apache.maven.surefire.api.provider.CommandListener; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.common.junit4.JUnit4RunListener; import org.apache.maven.surefire.common.junit4.JUnitTestFailureListener; import org.apache.maven.surefire.common.junit4.Notifier; @@ -31,7 +32,6 @@ import org.apache.maven.surefire.common.junit48.JUnit48TestChecker; import org.apache.maven.surefire.api.provider.AbstractProvider; import org.apache.maven.surefire.api.provider.ProviderParameters; -import org.apache.maven.surefire.api.report.ConsoleStream; import org.apache.maven.surefire.api.report.ReporterFactory; import org.apache.maven.surefire.api.suite.RunResult; import org.apache.maven.surefire.api.testset.TestListResolver; @@ -118,12 +118,10 @@ private boolean isSingleThreaded() public RunResult invoke( Object forkTestSet ) throws TestSetFailedException { - final ReporterFactory reporterFactory = providerParameters.getReporterFactory(); - - final ConsoleStream consoleStream = providerParameters.getConsoleLogger(); - - Notifier notifier = - new Notifier( createRunListener( reporterFactory, consoleStream ), getSkipAfterFailureCount() ); + ReporterFactory reporterFactory = providerParameters.getReporterFactory(); + JUnit4RunListener listener = createRunListener( reporterFactory ); + ConsoleLogger logger = listener.getConsoleLogger(); + Notifier notifier = new Notifier( listener, getSkipAfterFailureCount() ); // startCapture() called in createRunListener() in prior to setTestsToRun() Filter filter = jUnit48Reflector.isJUnit48Available() ? createJUnit48Filter() : null; @@ -146,7 +144,7 @@ public RunResult invoke( Object forkTestSet ) try { - JUnitCoreWrapper core = new JUnitCoreWrapper( notifier, jUnitCoreParameters, consoleStream ); + JUnitCoreWrapper core = new JUnitCoreWrapper( notifier, jUnitCoreParameters, logger ); if ( commandsReader != null ) { @@ -163,7 +161,7 @@ public RunResult invoke( Object forkTestSet ) { Notifier rerunNotifier = pureNotifier(); notifier.copyListenersTo( rerunNotifier ); - JUnitCoreWrapper rerunCore = new JUnitCoreWrapper( rerunNotifier, jUnitCoreParameters, consoleStream ); + JUnitCoreWrapper rerunCore = new JUnitCoreWrapper( rerunNotifier, jUnitCoreParameters, logger ); for ( int i = 0; i < rerunFailingTestsCount && !testFailureListener.getAllFailures().isEmpty(); i++ ) { Set failures = generateFailingTestDescriptions( testFailureListener.getAllFailures() ); @@ -239,23 +237,21 @@ public void update( Command command ) } ); } - private JUnit4RunListener createRunListener( ReporterFactory reporterFactory, ConsoleStream consoleStream ) - throws TestSetFailedException + private JUnit4RunListener createRunListener( ReporterFactory reporterFactory ) { if ( isSingleThreaded() ) { - NonConcurrentRunListener rm = new NonConcurrentRunListener( reporterFactory.createReporter() ); + NonConcurrentRunListener rm = new NonConcurrentRunListener( reporterFactory.createTestReportListener() ); startCapture( rm ); return rm; } else { - final Map testSetMap = new ConcurrentHashMap<>(); - - TestRunListener listener = createInstance( testSetMap, reporterFactory, isParallelTypes(), - isParallelMethodsAndTypes(), consoleStream ); + Map testSetMap = new ConcurrentHashMap<>(); + boolean parallelClasses = isParallelTypes(); + boolean parallelBoth = isParallelMethodsAndTypes(); + TestReportListener listener = createInstance( testSetMap, reporterFactory, parallelClasses, parallelBoth ); startCapture( listener ); - return new JUnitCoreRunListener( listener, testSetMap ); } } diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.java index f272c21ca7..93f4bc079c 100644 --- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.java +++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.java @@ -19,7 +19,7 @@ * under the License. */ -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.common.junit4.JUnit4RunListener; import org.apache.maven.surefire.common.junit4.JUnit4StackTraceWriter; import org.apache.maven.surefire.api.report.StackTraceWriter; @@ -40,7 +40,7 @@ * * @see org.apache.maven.surefire.junitcore.ConcurrentRunListener for details about parallel running */ -public class JUnitCoreRunListener +final class JUnitCoreRunListener extends JUnit4RunListener { private final Map classMethodCounts; @@ -49,7 +49,7 @@ public class JUnitCoreRunListener * @param reporter the report manager to log testing events to * @param classMethodCounts A map of methods */ - public JUnitCoreRunListener( TestRunListener reporter, Map classMethodCounts ) + JUnitCoreRunListener( TestReportListener reporter, Map classMethodCounts ) { super( reporter ); this.classMethodCounts = classMethodCounts; 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 60ba4708bb..3ae0b48e1f 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 @@ -19,12 +19,12 @@ * under the License. */ +import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; +import org.apache.maven.surefire.api.testset.TestSetFailedException; +import org.apache.maven.surefire.api.util.TestsToRun; 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.api.report.ConsoleStream; -import org.apache.maven.surefire.api.testset.TestSetFailedException; -import org.apache.maven.surefire.api.util.TestsToRun; import org.junit.Ignore; import org.junit.runner.Computer; import org.junit.runner.Description; @@ -54,9 +54,9 @@ final class JUnitCoreWrapper { private final Notifier notifier; private final JUnitCoreParameters jUnitCoreParameters; - private final ConsoleStream consoleStream; + private final ConsoleLogger consoleStream; - JUnitCoreWrapper( Notifier notifier, JUnitCoreParameters jUnitCoreParameters, ConsoleStream consoleStream ) + JUnitCoreWrapper( Notifier notifier, JUnitCoreParameters jUnitCoreParameters, ConsoleLogger consoleStream ) { this.notifier = notifier; this.jUnitCoreParameters = jUnitCoreParameters; 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 4ca3603b3e..d60e0efc65 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 @@ -19,29 +19,24 @@ * under the License. */ -import java.util.Map; - -import org.apache.maven.surefire.api.report.ConsoleStream; import org.apache.maven.surefire.api.report.ReporterFactory; -import org.apache.maven.surefire.api.testset.TestSetFailedException; -import org.junit.runner.notification.RunListener.ThreadSafe; + +import java.util.Map; /** * @author Kristian Rosenvold */ -@ThreadSafe -public class MethodsParallelRunListener +final class MethodsParallelRunListener extends ConcurrentRunListener { private volatile TestSet lastStarted; private final Object lock = new Object(); - public MethodsParallelRunListener( Map classMethodCounts, ReporterFactory reporterFactory, - boolean reportImmediately, ConsoleStream consoleStream ) - throws TestSetFailedException + MethodsParallelRunListener( Map classMethodCounts, ReporterFactory reporterFactory, + boolean reportImmediately ) { - super( reporterFactory, consoleStream, reportImmediately, classMethodCounts ); + super( reporterFactory, reportImmediately, classMethodCounts ); } @Override diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/NonConcurrentRunListener.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/NonConcurrentRunListener.java index c8f3d68922..b5428b066b 100644 --- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/NonConcurrentRunListener.java +++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/NonConcurrentRunListener.java @@ -19,13 +19,11 @@ * under the License. */ -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.api.util.internal.ClassMethod; import org.apache.maven.surefire.common.junit4.JUnit4RunListener; -import org.apache.maven.surefire.api.report.TestOutputReceiver; import org.apache.maven.surefire.api.report.SimpleReportEntry; import org.apache.maven.surefire.api.report.TestSetReportEntry; -import org.apache.maven.surefire.api.testset.TestSetFailedException; import org.junit.runner.Description; import org.junit.runner.Result; import org.junit.runner.notification.Failure; @@ -41,16 +39,14 @@ * limitation a la Junit4 provider. Specifically, we can redirect properly the output even if we don't have class * demarcation in JUnit. It works when if there is a JVM instance per test run, i.e. with forkMode=always or perthread. */ -public class NonConcurrentRunListener +class NonConcurrentRunListener extends JUnit4RunListener - implements TestOutputReceiver { private Description currentTestSetDescription; private Description lastFinishedDescription; - public NonConcurrentRunListener( TestRunListener reporter ) - throws TestSetFailedException + NonConcurrentRunListener( TestReportListener reporter ) { super( reporter ); } diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestMethod.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestMethod.java index 164c71d64f..b81dc028b6 100644 --- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestMethod.java +++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestMethod.java @@ -23,7 +23,7 @@ import org.apache.maven.surefire.api.report.TestOutputReceiver; import org.apache.maven.surefire.api.report.ConsoleOutputReceiverForCurrentThread; import org.apache.maven.surefire.api.report.ReportEntry; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import java.util.concurrent.atomic.AtomicReference; @@ -112,7 +112,7 @@ long getEndTime() return endTime; } - void replay( TestRunListener reporter ) + void replay( TestReportListener reporter ) { if ( testIgnored != null ) { diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java index 8f30186ba5..d295bb7a5a 100644 --- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java +++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java @@ -21,7 +21,7 @@ import org.apache.maven.surefire.api.report.ReportEntry; import org.apache.maven.surefire.api.report.SimpleReportEntry; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.api.report.TestSetReportEntry; import java.util.Collection; @@ -60,7 +60,7 @@ public TestSet( String testClassName ) this.testClassName = testClassName; } - public void replay( TestRunListener target ) + public void replay( TestReportListener target ) { if ( played.compareAndSet( false, true ) ) { @@ -133,7 +133,7 @@ private void addTestMethod( TestMethod testMethod ) testMethods.add( testMethod ); } - public void incrementFinishedTests( TestRunListener reporterManager, boolean reportImmediately ) + public void incrementFinishedTests( TestReportListener reporterManager, boolean reportImmediately ) { numberOfCompletedChildren.incrementAndGet(); if ( allScheduled && isAllTestsDone() && reportImmediately ) @@ -142,7 +142,7 @@ public void incrementFinishedTests( TestRunListener reporterManager, boolean rep } } - public void setAllScheduled( TestRunListener reporterManager ) + public void setAllScheduled( TestReportListener reporterManager ) { allScheduled = true; if ( isAllTestsDone() ) 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 bad29896fc..b226141860 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 @@ * under the License. */ -import org.apache.maven.surefire.api.report.ConsoleStream; +import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import java.util.Collection; import java.util.concurrent.ExecutorService; @@ -47,12 +47,12 @@ abstract class AbstractThreadPoolStrategy private volatile boolean isDestroyed; - AbstractThreadPoolStrategy( ConsoleStream logger, ExecutorService threadPool ) + AbstractThreadPoolStrategy( ConsoleLogger logger, ExecutorService threadPool ) { this( logger, threadPool, null ); } - AbstractThreadPoolStrategy( ConsoleStream logger, ExecutorService threadPool, Collection> futureResults ) + AbstractThreadPoolStrategy( ConsoleLogger logger, ExecutorService threadPool, Collection> futureResults ) { super( logger ); this.threadPool = threadPool; 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 f4faadca66..55091dfe46 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 @@ * under the License. */ -import org.apache.maven.surefire.api.report.ConsoleStream; +import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; @@ -37,7 +37,7 @@ final class InvokerStrategy private final Queue activeThreads = new ConcurrentLinkedQueue<>(); - protected InvokerStrategy( ConsoleStream logger ) + protected InvokerStrategy( ConsoleLogger logger ) { super( logger ); } 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 92a300dff8..eee8df5cba 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 @@ * under the License. */ -import org.apache.maven.surefire.api.report.ConsoleStream; +import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; @@ -34,7 +34,7 @@ final class NonSharedThreadPoolStrategy extends AbstractThreadPoolStrategy { - NonSharedThreadPoolStrategy( ConsoleStream logger, ExecutorService threadPool ) + NonSharedThreadPoolStrategy( ConsoleLogger logger, ExecutorService threadPool ) { super( logger, threadPool ); } 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 b17a9d7964..f9d178abef 100755 --- 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 @@ -34,8 +34,8 @@ import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; +import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import org.apache.maven.surefire.junitcore.JUnitCoreParameters; -import org.apache.maven.surefire.api.report.ConsoleStream; import org.apache.maven.surefire.api.testset.TestSetFailedException; import org.apache.maven.surefire.api.util.internal.DaemonThreadFactory; import org.junit.internal.runners.ErrorReportingRunner; @@ -93,7 +93,7 @@ public final class ParallelComputerBuilder private final Map parallelGroups = new EnumMap<>( Type.class ); - private final ConsoleStream logger; + private final ConsoleLogger logger; private boolean useSeparatePools; @@ -110,7 +110,7 @@ public final class ParallelComputerBuilder * Can be used only in unit tests. * Do NOT call this constructor in production. */ - ParallelComputerBuilder( ConsoleStream logger ) + ParallelComputerBuilder( ConsoleLogger logger ) { this.logger = logger; runningInTests = true; @@ -120,7 +120,7 @@ public final class ParallelComputerBuilder parallelGroups.put( METHODS, 0 ); } - public ParallelComputerBuilder( ConsoleStream logger, JUnitCoreParameters parameters ) + public ParallelComputerBuilder( ConsoleLogger logger, JUnitCoreParameters parameters ) { this( logger ); runningInTests = false; 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 bb2d4ac283..61222a29fa 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,12 +19,10 @@ * under the License. */ -import org.apache.maven.surefire.api.report.ConsoleStream; +import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import org.junit.runner.Description; import org.junit.runners.model.RunnerScheduler; -import java.io.ByteArrayOutputStream; -import java.io.PrintStream; import java.util.Collection; import java.util.Set; import java.util.concurrent.ConcurrentLinkedQueue; @@ -56,7 +54,7 @@ public class Scheduler private final Description description; - private final ConsoleStream logger; + private final ConsoleLogger logger; private volatile boolean shutdown = false; @@ -76,7 +74,7 @@ public class Scheduler * @param description JUnit description of class * @param strategy scheduling strategy */ - public Scheduler( ConsoleStream logger, Description description, SchedulingStrategy strategy ) + public Scheduler( ConsoleLogger logger, Description description, SchedulingStrategy strategy ) { this( logger, description, strategy, -1 ); } @@ -85,8 +83,8 @@ public Scheduler( ConsoleStream logger, Description description, SchedulingStrat * Should be used if schedulers in parallel children and parent use one instance of bounded thread pool. *
* Set this scheduler in a e.g. one suite of classes, then every individual class runner should reference - * {@link #Scheduler(ConsoleStream, org.junit.runner.Description, Scheduler, SchedulingStrategy)} - * or {@link #Scheduler(ConsoleStream, org.junit.runner.Description, Scheduler, SchedulingStrategy, int)}. + * {@link #Scheduler(ConsoleLogger, org.junit.runner.Description, Scheduler, SchedulingStrategy)} + * or {@link #Scheduler(ConsoleLogger, org.junit.runner.Description, Scheduler, SchedulingStrategy, int)}. * * @param logger current logger implementation * @param description description of current runner @@ -94,7 +92,7 @@ public Scheduler( ConsoleStream logger, Description description, SchedulingStrat * @param concurrency determines maximum concurrent children scheduled a time via {@link #schedule(Runnable)} * @throws NullPointerException if null strategy */ - public Scheduler( ConsoleStream logger, Description description, SchedulingStrategy strategy, int concurrency ) + public Scheduler( ConsoleLogger logger, Description description, SchedulingStrategy strategy, int concurrency ) { this( logger, description, strategy, BalancerFactory.createBalancer( concurrency ) ); } @@ -103,7 +101,7 @@ public Scheduler( ConsoleStream logger, Description description, SchedulingStrat * New instances should be used by schedulers with limited concurrency by balancer * against other groups of schedulers. The schedulers share one pool. *
- * Unlike in {@link #Scheduler(ConsoleStream, org.junit.runner.Description, SchedulingStrategy, int)} which was + * Unlike in {@link #Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy, int)} which was * limiting the concurrency of children of a runner where this scheduler was set, {@code this} * balancer is limiting the concurrency of all children in runners having schedulers created by this * constructor. @@ -114,7 +112,7 @@ public Scheduler( ConsoleStream logger, Description description, SchedulingStrat * @param balancer determines maximum concurrent children scheduled a time via {@link #schedule(Runnable)} * @throws NullPointerException if null strategy or balancer */ - public Scheduler( ConsoleStream logger, Description description, SchedulingStrategy strategy, Balancer balancer ) + public Scheduler( ConsoleLogger logger, Description description, SchedulingStrategy strategy, Balancer balancer ) { strategy.setDefaultShutdownHandler( newShutdownHandler() ); this.logger = logger; @@ -135,7 +133,7 @@ public Scheduler( ConsoleStream logger, Description description, SchedulingStrat * @param balancer determines maximum concurrent children scheduled a time via {@link #schedule(Runnable)} * @throws NullPointerException if null masterScheduler, strategy or balancer */ - public Scheduler( ConsoleStream logger, Description description, Scheduler masterScheduler, + public Scheduler( ConsoleLogger logger, Description description, Scheduler masterScheduler, SchedulingStrategy strategy, Balancer balancer ) { this( logger, description, strategy, balancer ); @@ -147,15 +145,15 @@ public Scheduler( ConsoleStream logger, Description description, Scheduler maste * @param logger console logger * @param description JUnit description of class * @param masterScheduler a reference to - * {@link #Scheduler(ConsoleStream, org.junit.runner.Description, SchedulingStrategy, int)} - * or {@link #Scheduler(ConsoleStream, org.junit.runner.Description, SchedulingStrategy)} + * {@link #Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy, int)} + * or {@link #Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy)} * @param strategy scheduling strategy * @param concurrency determines maximum concurrent children scheduled a time via {@link #schedule(Runnable)} * - * @see #Scheduler(ConsoleStream, org.junit.runner.Description, SchedulingStrategy) - * @see #Scheduler(ConsoleStream, org.junit.runner.Description, SchedulingStrategy, int) + * @see #Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy) + * @see #Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy, int) */ - public Scheduler( ConsoleStream logger, Description description, Scheduler masterScheduler, + public Scheduler( ConsoleLogger logger, Description description, Scheduler masterScheduler, SchedulingStrategy strategy, int concurrency ) { this( logger, description, strategy, concurrency ); @@ -174,7 +172,7 @@ public Scheduler( ConsoleStream logger, Description description, Scheduler maste * @param masterScheduler parent scheduler * @param strategy scheduling strategy */ - public Scheduler( ConsoleStream logger, Description description, Scheduler masterScheduler, + public Scheduler( ConsoleLogger logger, Description description, Scheduler masterScheduler, SchedulingStrategy strategy ) { this( logger, description, masterScheduler, strategy, 0 ); @@ -219,17 +217,12 @@ private boolean canSchedule() protected void logQuietly( Throwable t ) { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - try ( PrintStream stream = new PrintStream( out ) ) - { - t.printStackTrace( stream ); - } - logger.println( out.toString() ); + logger.error( t ); } protected void logQuietly( String msg ) { - logger.println( msg ); + logger.warning( msg ); } /** 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 37c0e15d23..b021d9e7b9 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 @@ * under the License. */ -import org.apache.maven.surefire.api.report.ConsoleStream; +import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import org.apache.maven.surefire.api.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( ConsoleStream logger ) + public static SchedulingStrategy createInvokerStrategy( ConsoleLogger logger ) { return new InvokerStrategy( logger ); } @@ -50,7 +50,7 @@ public static SchedulingStrategy createInvokerStrategy( ConsoleStream logger ) * @param nThreads fixed pool capacity * @return parallel scheduling strategy */ - public static SchedulingStrategy createParallelStrategy( ConsoleStream logger, int nThreads ) + public static SchedulingStrategy createParallelStrategy( ConsoleLogger logger, int nThreads ) { return new NonSharedThreadPoolStrategy( logger, Executors.newFixedThreadPool( nThreads, DAEMON_THREAD_FACTORY ) ); @@ -60,7 +60,7 @@ public static SchedulingStrategy createParallelStrategy( ConsoleStream logger, i * @param logger current error logger * @return parallel scheduling strategy with unbounded capacity */ - public static SchedulingStrategy createParallelStrategyUnbounded( ConsoleStream logger ) + public static SchedulingStrategy createParallelStrategyUnbounded( ConsoleLogger logger ) { return new NonSharedThreadPoolStrategy( logger, Executors.newCachedThreadPool( DAEMON_THREAD_FACTORY ) ); } @@ -78,7 +78,7 @@ public static SchedulingStrategy createParallelStrategyUnbounded( ConsoleStream * @return parallel strategy with shared thread pool * @throws NullPointerException if threadPool is null */ - public static SchedulingStrategy createParallelSharedStrategy( ConsoleStream logger, ExecutorService threadPool ) + public static SchedulingStrategy createParallelSharedStrategy( ConsoleLogger logger, ExecutorService threadPool ) { if ( threadPool == null ) { 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 6c81bbacd6..08e4a02cc7 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,10 +19,8 @@ * under the License. */ -import org.apache.maven.surefire.api.report.ConsoleStream; +import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; -import java.io.ByteArrayOutputStream; -import java.io.PrintStream; import java.util.concurrent.atomic.AtomicBoolean; /** @@ -43,9 +41,9 @@ public abstract class SchedulingStrategy private final AtomicBoolean canSchedule = new AtomicBoolean( true ); - private final ConsoleStream logger; + private final ConsoleLogger logger; - protected SchedulingStrategy( ConsoleStream logger ) + protected SchedulingStrategy( ConsoleLogger logger ) { this.logger = logger; } @@ -134,11 +132,6 @@ protected boolean canSchedule() protected void logQuietly( Throwable t ) { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - try ( PrintStream stream = new PrintStream( out ) ) - { - t.printStackTrace( stream ); - } - logger.println( out.toString() ); + logger.error( t ); } } 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 11f544ceba..d3af15ce56 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 @@ * under the License. */ -import org.apache.maven.surefire.api.report.ConsoleStream; +import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import java.util.concurrent.CancellationException; import java.util.concurrent.ConcurrentLinkedQueue; @@ -37,7 +37,7 @@ final class SharedThreadPoolStrategy extends AbstractThreadPoolStrategy { - SharedThreadPoolStrategy( ConsoleStream logger, ExecutorService threadPool ) + SharedThreadPoolStrategy( ConsoleLogger logger, ExecutorService threadPool ) { super( logger, threadPool, new ConcurrentLinkedQueue>() ); } 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 b0ea97e767..f4c92b468a 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 @@ * under the License. */ -import org.apache.maven.surefire.api.report.ConsoleStream; +import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import org.apache.maven.surefire.api.util.internal.DaemonThreadFactory; import org.junit.runner.Description; import org.junit.runners.model.RunnerScheduler; @@ -42,7 +42,7 @@ */ final class SingleThreadScheduler { - private final ConsoleStream logger; + private final ConsoleLogger logger; private final ExecutorService pool = newPool(); @@ -54,7 +54,7 @@ private static ExecutorService newPool() return new ThreadPoolExecutor( 1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue(), tf ); } - SingleThreadScheduler( ConsoleStream logger ) + SingleThreadScheduler( ConsoleLogger logger ) { this.logger = logger; SchedulingStrategy strategy = SchedulingStrategies.createParallelSharedStrategy( logger, pool ); 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 c512a5164f..0af0595b86 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 @@ -19,26 +19,24 @@ * under the License. */ -import java.io.ByteArrayOutputStream; -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.api.report.ConsoleStream; -import org.apache.maven.surefire.api.report.DefaultDirectConsoleReporter; -import org.apache.maven.surefire.api.report.ReporterFactory; -import org.apache.maven.surefire.api.report.TestRunListener; -import org.apache.maven.surefire.report.RunStatistics; -import org.apache.maven.surefire.api.testset.TestSetFailedException; - import junit.framework.Assert; import junit.framework.TestCase; import junit.framework.TestSuite; +import org.apache.maven.plugin.surefire.report.DefaultReporterFactory; +import org.apache.maven.surefire.api.report.ReporterFactory; +import org.apache.maven.surefire.api.report.TestReportListener; +import org.apache.maven.surefire.api.testset.TestSetFailedException; +import org.apache.maven.surefire.report.RunStatistics; 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.PrintStream; +import java.util.HashMap; +import java.util.Map; + /** * @author Kristian Rosenvold */ @@ -148,16 +146,14 @@ private void runClasses( int success, int ignored, int failure, Class... clas { DefaultReporterFactory reporterFactory = createReporterFactory(); HashMap classMethodCounts = new HashMap<>(); - final ConsoleStream defaultConsoleReporter = new DefaultDirectConsoleReporter( System.out ); - TestRunListener reporter = - new ClassesParallelRunListener( classMethodCounts, reporterFactory, defaultConsoleReporter ); + TestReportListener reporter = new ClassesParallelRunListener( classMethodCounts, reporterFactory ); JUnitCoreRunListener runListener = new JUnitCoreRunListener( reporter, classMethodCounts ); RunStatistics result = runClasses( reporterFactory, runListener, classes ); assertReporter( result, success, ignored, failure, "classes" ); classMethodCounts.clear(); reporterFactory = createReporterFactory(); - reporter = new MethodsParallelRunListener( classMethodCounts, reporterFactory, true, defaultConsoleReporter ); + reporter = new MethodsParallelRunListener( classMethodCounts, reporterFactory, true ); runListener = new JUnitCoreRunListener( reporter, classMethodCounts ); result = runClasses( reporterFactory, runListener, classes ); assertReporter( result, success, ignored, failure, "methods" ); @@ -198,14 +194,11 @@ private RunStatistics runClasses( DefaultReporterFactory reporterManagerFactory, private org.junit.runner.notification.RunListener createRunListener( ReporterFactory reporterFactory, Map testSetMap ) - throws TestSetFailedException { - return new JUnitCoreRunListener( - new ClassesParallelRunListener( testSetMap, reporterFactory, - new DefaultDirectConsoleReporter( System.out ) ), testSetMap ); + TestReportListener handler = new ClassesParallelRunListener( testSetMap, reporterFactory ); + return new JUnitCoreRunListener( handler, testSetMap ); } - /** * */ 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 6a36bdc6ab..f3cea120f9 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 @@ -25,9 +25,8 @@ import org.apache.maven.plugin.surefire.extensions.SurefireStatelessTestsetInfoReporter; import org.apache.maven.plugin.surefire.log.api.NullConsoleLogger; import org.apache.maven.plugin.surefire.report.DefaultReporterFactory; -import org.apache.maven.surefire.api.report.DefaultDirectConsoleReporter; import org.apache.maven.surefire.api.report.ReporterFactory; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.api.testset.TestSetFailedException; import org.junit.runner.Computer; import org.junit.runner.JUnitCore; @@ -65,8 +64,8 @@ public Result run( boolean parallelClasses, Class... classes ) try { final HashMap classMethodCounts = new HashMap<>(); - TestRunListener reporter = createInstance( classMethodCounts, reporterManagerFactory, parallelClasses, - false, new DefaultDirectConsoleReporter( System.out ) ); + TestReportListener reporter = + createInstance( classMethodCounts, reporterManagerFactory, parallelClasses, false ); startCapture( reporter ); JUnitCoreRunListener runListener = new JUnitCoreRunListener( reporter, classMethodCounts ); diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MockReporter.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MockReporter.java index e533bf6f87..1918fb3e01 100644 --- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MockReporter.java +++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MockReporter.java @@ -23,7 +23,7 @@ import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import org.apache.maven.surefire.api.report.ReportEntry; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.api.report.TestSetReportEntry; import org.apache.maven.surefire.api.report.RunMode; @@ -31,7 +31,7 @@ * Internal tests use only. */ final class MockReporter - implements TestRunListener + implements TestReportListener { private final List events = new ArrayList<>(); @@ -142,4 +142,64 @@ public void writeTestOutput( String output, boolean newLine, boolean stdout ) { } + + @Override + public boolean isDebugEnabled() + { + return false; + } + + @Override + public void debug( String message ) + { + + } + + @Override + public boolean isInfoEnabled() + { + return false; + } + + @Override + public void info( String message ) + { + + } + + @Override + public boolean isWarnEnabled() + { + return false; + } + + @Override + public void warning( String message ) + { + + } + + @Override + public boolean isErrorEnabled() + { + return false; + } + + @Override + public void error( String message ) + { + + } + + @Override + public void error( String message, Throwable t ) + { + + } + + @Override + public void error( Throwable t ) + { + + } } 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 eb8f736a64..c2efdb4ca7 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 @@ -36,26 +36,17 @@ * limitations under the License. */ -import java.io.File; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - +import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import org.apache.maven.surefire.api.booter.BaseProviderFactory; import org.apache.maven.surefire.api.booter.ProviderParameterNames; -import org.apache.maven.surefire.api.report.TestRunListener; -import org.apache.maven.surefire.common.junit4.JUnit4RunListener; -import org.apache.maven.surefire.common.junit4.Notifier; -import org.apache.maven.surefire.api.report.DefaultDirectConsoleReporter; import org.apache.maven.surefire.api.report.ReporterConfiguration; import org.apache.maven.surefire.api.report.ReporterFactory; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.api.suite.RunResult; import org.apache.maven.surefire.api.testset.TestSetFailedException; import org.apache.maven.surefire.api.util.TestsToRun; - +import org.apache.maven.surefire.common.junit4.JUnit4RunListener; +import org.apache.maven.surefire.common.junit4.Notifier; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -65,7 +56,17 @@ import org.junit.runners.BlockJUnit4ClassRunner; import org.junit.runners.model.InitializationError; +import java.io.File; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import static junit.framework.Assert.assertEquals; +import static org.apache.maven.surefire.junitcore.ConcurrentRunListener.createInstance; +import static org.mockito.Mockito.mock; /** * {@code @@ -120,8 +121,7 @@ public void surefireIsConfused_ByMultipleIgnore_OnClassLevel() throws Exception final Map testSetMap = new ConcurrentHashMap<>(); - TestRunListener listener = ConcurrentRunListener.createInstance( testSetMap, reporterFactory, false, false, - new DefaultDirectConsoleReporter( System.out ) ); + TestReportListener listener = createInstance( testSetMap, reporterFactory, false, false ); TestsToRun testsToRun = new TestsToRun( Collections.>singleton( TestClassTest.class ) ); @@ -136,8 +136,8 @@ public void surefireIsConfused_ByMultipleIgnore_OnClassLevel() throws Exception // 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 DefaultDirectConsoleReporter( System.out ) ).execute( testsToRun, customRunListeners, null ); + new JUnitCoreWrapper( new Notifier( dummy, 0 ), jUnitCoreParameters, mock( ConsoleLogger.class ) ) + .execute( testsToRun, customRunListeners, null ); } finally { 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 0855aa7aaf..5716256bd1 100755 --- 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,8 +20,7 @@ */ import net.jcip.annotations.NotThreadSafe; -import org.apache.maven.surefire.api.report.ConsoleStream; -import org.apache.maven.surefire.api.report.DefaultDirectConsoleReporter; +import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; @@ -47,17 +46,18 @@ import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.TimeUnit; +import static org.apache.maven.surefire.junitcore.pc.RangeMatcher.between; import static org.hamcrest.core.AnyOf.anyOf; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsNot.not; -import static org.apache.maven.surefire.junitcore.pc.RangeMatcher.between; -import static org.junit.Assert.fail; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.mock; /** * @author Tibor Digana (tibor17) @@ -74,7 +74,7 @@ public class ParallelComputerBuilderTest private static volatile Runnable shutdownTask; - private static final ConsoleStream LOGGER = new DefaultDirectConsoleReporter( System.out ); + private static final ConsoleLogger LOGGER = mock( ConsoleLogger.class ); private static void testKeepBeforeAfter( ParallelComputerBuilder builder, Class... classes ) { 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 6f7e02bd55..9dd87d09a3 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 @@ -19,13 +19,12 @@ * under the License. */ -import org.apache.maven.surefire.junitcore.JUnitCoreParameters; -import org.apache.maven.surefire.api.report.ConsoleStream; -import org.apache.maven.surefire.api.report.DefaultDirectConsoleReporter; +import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import org.apache.maven.surefire.api.testset.TestSetFailedException; +import org.apache.maven.surefire.junitcore.JUnitCoreParameters; import org.junit.AfterClass; -import org.junit.BeforeClass; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Rule; import org.junit.Test; import org.junit.experimental.theories.DataPoint; @@ -41,20 +40,21 @@ import java.util.Map; import java.util.concurrent.TimeUnit; -import static org.apache.maven.surefire.junitcore.pc.ParallelComputerUtil.resolveConcurrency; import static org.apache.maven.surefire.junitcore.JUnitCoreParameters.PARALLEL_KEY; -import static org.apache.maven.surefire.junitcore.JUnitCoreParameters.THREADCOUNT_KEY; -import static org.apache.maven.surefire.junitcore.JUnitCoreParameters.THREADCOUNTSUITES_KEY; +import static org.apache.maven.surefire.junitcore.JUnitCoreParameters.PARALLEL_TIMEOUTFORCED_KEY; +import static org.apache.maven.surefire.junitcore.JUnitCoreParameters.PARALLEL_TIMEOUT_KEY; import static org.apache.maven.surefire.junitcore.JUnitCoreParameters.THREADCOUNTCLASSES_KEY; import static org.apache.maven.surefire.junitcore.JUnitCoreParameters.THREADCOUNTMETHODS_KEY; -import static org.apache.maven.surefire.junitcore.JUnitCoreParameters.PARALLEL_TIMEOUT_KEY; -import static org.apache.maven.surefire.junitcore.JUnitCoreParameters.PARALLEL_TIMEOUTFORCED_KEY; +import static org.apache.maven.surefire.junitcore.JUnitCoreParameters.THREADCOUNTSUITES_KEY; +import static org.apache.maven.surefire.junitcore.JUnitCoreParameters.THREADCOUNT_KEY; import static org.apache.maven.surefire.junitcore.JUnitCoreParameters.USEUNLIMITEDTHREADS_KEY; +import static org.apache.maven.surefire.junitcore.pc.ParallelComputerUtil.resolveConcurrency; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; /** * Testing an algorithm in {@link ParallelComputerUtil} which configures allocated thread resources in ParallelComputer @@ -68,7 +68,7 @@ @SuppressWarnings( "checkstyle:magicnumber" ) public final class ParallelComputerUtilTest { - private static final ConsoleStream LOGGER = new DefaultDirectConsoleReporter( System.out ); + private static final ConsoleLogger LOGGER = mock( ConsoleLogger.class ); @DataPoint public static final int CPU_1 = 1; diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategiesTest.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategiesTest.java index 03a5d8eca5..489868a195 100644 --- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategiesTest.java +++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategiesTest.java @@ -19,8 +19,7 @@ * under the License. */ -import org.apache.maven.surefire.api.report.ConsoleStream; -import org.apache.maven.surefire.api.report.DefaultDirectConsoleReporter; +import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import org.junit.Test; import java.util.concurrent.ExecutorService; @@ -30,6 +29,7 @@ import static org.apache.maven.surefire.api.util.internal.DaemonThreadFactory.newDaemonThreadFactory; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; /** * Tests the factories in SchedulingStrategy. @@ -48,7 +48,7 @@ public class SchedulingStrategiesTest { private static final ThreadFactory DAEMON_THREAD_FACTORY = newDaemonThreadFactory(); - private final ConsoleStream logger = new DefaultDirectConsoleReporter( System.out ); + private final ConsoleLogger logger = mock( ConsoleLogger.class ); @Test public void invokerStrategy() diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java index 583ebd7904..fabe13a9fc 100644 --- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java +++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java @@ -27,7 +27,7 @@ import org.apache.maven.surefire.api.provider.ProviderParameters; import org.apache.maven.surefire.api.report.ReporterConfiguration; import org.apache.maven.surefire.api.report.ReporterFactory; -import org.apache.maven.surefire.api.report.TestRunListener; +import org.apache.maven.surefire.api.report.TestReportListener; import org.apache.maven.surefire.api.suite.RunResult; import org.apache.maven.surefire.testng.utils.FailFastEventsSingleton; import org.apache.maven.surefire.api.testset.TestListResolver; @@ -97,7 +97,7 @@ public RunResult invoke( Object forkTestSet ) } final ReporterFactory reporterFactory = providerParameters.getReporterFactory(); - final TestRunListener reporter = reporterFactory.createReporter(); + final TestReportListener reporter = reporterFactory.createTestReportListener(); /* * {@link org.apache.maven.surefire.api.report.ConsoleOutputCapture#startCapture(ConsoleOutputReceiver)} * called in prior to initializing variable {@link #testsToRun}