Skip to content

Commit

Permalink
Removed ConsoleStream interface and used ConsoleLogger instead. Any c…
Browse files Browse the repository at this point in the history
…ombinations 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.
  • Loading branch information
Tibor17 committed Feb 14, 2022
1 parent 7f92897 commit 0f80934
Show file tree
Hide file tree
Showing 55 changed files with 579 additions and 550 deletions.
Expand Up @@ -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;
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -380,15 +380,15 @@ public final boolean hadTimeout()
/**
* Only {@link #getConsoleOutputReceiver()} may call this method in another Thread.
*/
private TestRunListener getTestSetReporter()
private TestReportListener getTestSetReporter()
{
if ( testSetReporter == null )
{
synchronized ( this )
{
if ( testSetReporter == null )
{
testSetReporter = defaultReporterFactory.createReporter();
testSetReporter = defaultReporterFactory.createTestReportListener();
}
}
}
Expand Down Expand Up @@ -431,7 +431,7 @@ public TestOutputReceiver getConsoleOutputReceiver()

private ConsoleLogger getOrCreateConsoleLogger()
{
return (ConsoleLogger) getTestSetReporter();
return getTestSetReporter();
}

public void close( boolean hadTimeout )
Expand Down
Expand Up @@ -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;
Expand Down Expand Up @@ -97,7 +97,7 @@ public DefaultReporterFactory( StartupReportConfiguration reportConfiguration, C
}

@Override
public TestRunListener createReporter()
public TestReportListener createTestReportListener()
{
TestSetRunListener testSetRunListener =
new TestSetRunListener( createConsoleReporter(),
Expand Down
Expand Up @@ -25,15 +25,14 @@
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;
import org.apache.maven.surefire.extensions.StatelessTestsetInfoConsoleReportEventListener;
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;
Expand All @@ -50,7 +49,7 @@
* @author Kristian Rosenvold
*/
public class TestSetRunListener
implements TestRunListener, ConsoleLogger
implements TestReportListener
{
private final Queue<TestMethodStats> testMethodStats = new ConcurrentLinkedQueue<>();

Expand Down
Expand Up @@ -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;
Expand Down Expand Up @@ -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" );
}
Expand Down Expand Up @@ -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 );
Expand All @@ -472,7 +472,7 @@ private class StandardTestRun
{
private MockReporter reporter;

public TestRunListener run()
public TestReportListener run()
throws ReporterException
{
reset();
Expand Down
Expand Up @@ -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;

Expand All @@ -33,7 +32,7 @@
* Internal tests use only.
*/
public class MockReporter
implements TestRunListener, ConsoleLogger
implements TestReportListener
{
private final List<String> events = new ArrayList<>();

Expand Down
Expand Up @@ -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;

Expand All @@ -43,7 +43,7 @@ public TestSetMockReporterFactory()
}

@Override
public TestRunListener createReporter()
public TestReportListener createTestReportListener()
{
return new MockReporter();
}
Expand Down
Expand Up @@ -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;
Expand Down Expand Up @@ -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() );
Expand Down Expand Up @@ -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 ) );
Expand Down
Expand Up @@ -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;
Expand Down Expand Up @@ -53,8 +51,6 @@ public class BaseProviderFactory

private ReporterFactory reporterFactory;

private MasterProcessChannelEncoder masterProcessChannelEncoder;

private List<CommandLineOption> mainCliOptions = emptyList();

private Map<String, String> providerProperties;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -260,9 +248,4 @@ public void setSystemExitTimeout( Integer systemExitTimeout )
{
this.systemExitTimeout = systemExitTimeout;
}

public void setForkedChannelEncoder( MasterProcessChannelEncoder masterProcessChannelEncoder )
{
this.masterProcessChannelEncoder = masterProcessChannelEncoder;
}
}
Expand Up @@ -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;

/**
Expand All @@ -43,7 +43,7 @@ public ForkingReporterFactory( boolean trimstackTrace, MasterProcessChannelEncod
}

@Override
public TestRunListener createReporter()
public TestReportListener createTestReportListener()
{
return new ForkingRunListener( eventChannel, trimstackTrace );
}
Expand Down
Expand Up @@ -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;
Expand All @@ -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".
* <br>
* 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.
* <br>
* This class is threadsafe.
* This class is thread-safe.
* <br>
* 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;
Expand Down Expand Up @@ -196,10 +193,4 @@ public void error( Throwable t )
{
error( null, t );
}

@Override
public void println( String message )
{
writeTestOutput( message, true, true );
}
}
Expand Up @@ -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;
Expand Down Expand Up @@ -77,16 +76,6 @@ public interface ProviderParameters
*/
ReporterFactory getReporterFactory();

/**
* Gets a logger intended for console output.
* <br>
* 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
*
Expand Down

This file was deleted.

0 comments on commit 0f80934

Please sign in to comment.