This is an automated email from the ASF dual-hosted git repository. tibordigana pushed a commit to branch maven2surefire-jvm-communication in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
commit 862f2d110ab20ae4c095b2c8f1d342f99a99ad74 Author: tibordigana <tibordig...@apache.org> AuthorDate: Sat Apr 4 00:08:43 2020 +0200 fixed Surefire817SystemExitIT --- .../booter/MasterProcessChannelEncoder.java | 2 ++ .../apache/maven/surefire/booter/ForkedBooter.java | 21 +++++++++++++++++++++ .../spi/LegacyMasterProcessChannelEncoder.java | 6 ++++++ 3 files changed, 29 insertions(+) diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessChannelEncoder.java b/surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessChannelEncoder.java index 062a57c..75c9e17 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessChannelEncoder.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessChannelEncoder.java @@ -38,6 +38,8 @@ public interface MasterProcessChannelEncoder boolean checkError(); + void onJvmExit(); + void sendSystemProperties( Map<String, String> sysProps ); void testSetStarting( ReportEntry reportEntry, boolean trimStackTraces ); 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 8b24d90..7b6d09e 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 @@ -27,6 +27,7 @@ import org.apache.maven.surefire.providerapi.ProviderParameters; import org.apache.maven.surefire.providerapi.SurefireProvider; import org.apache.maven.surefire.report.LegacyPojoStackTraceWriter; import org.apache.maven.surefire.report.StackTraceWriter; +import org.apache.maven.surefire.shared.utils.cli.ShutdownHookUtils; import org.apache.maven.surefire.spi.MasterProcessChannelProcessorFactory; import org.apache.maven.surefire.testset.TestSetFailedException; @@ -119,6 +120,8 @@ public final class ForkedBooter eventChannel = channelProcessorFactory.createEncoder(); MasterProcessChannelDecoder decoder = channelProcessorFactory.createDecoder(); + flushEventChannelOnExit(); + forkingReporterFactory = createForkingReporterFactory(); ConsoleLogger logger = (ConsoleLogger) forkingReporterFactory.createReporter(); commandReader = new CommandReader( decoder, providerConfiguration.getShutdown(), logger ); @@ -481,6 +484,24 @@ public final class ForkedBooter return (SurefireProvider) instantiateOneArg( classLoader, providerClass, ProviderParameters.class, bpf ); } + /** + * Necessary for the Surefire817SystemExitIT. + */ + private void flushEventChannelOnExit() + { + Runnable target = new Runnable() + { + @Override + public void run() + { + eventChannel.onJvmExit(); + } + }; + Thread t = new Thread( target ); + t.setDaemon( true ); + ShutdownHookUtils.addShutDownHook( t ); + } + private static MasterProcessChannelProcessorFactory lookupDecoderFactory( String channelConfig ) { MasterProcessChannelProcessorFactory defaultFactory = null; diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelEncoder.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelEncoder.java index 4a0c226..91d9d1b 100644 --- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelEncoder.java +++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelEncoder.java @@ -114,6 +114,12 @@ public class LegacyMasterProcessChannelEncoder implements MasterProcessChannelEn } @Override + public void onJvmExit() + { + encodeAndPrintEvent( new StringBuilder( "\n" ), true ); + } + + @Override public void sendSystemProperties( Map<String, String> sysProps ) { for ( Entry<String, String> entry : sysProps.entrySet() )