Repository: maven-surefire Updated Branches: refs/heads/master 0bf7e3436 -> c733075bc
[SUREFIRE-1197] Surefire 2.19 breaks tests under Windows due to fork problem Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/c733075b Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/c733075b Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/c733075b Branch: refs/heads/master Commit: c733075bc90bcd6e07cdc60c24fa5c833e14cf6e Parents: 0bf7e34 Author: Tibor17 <tibo...@lycos.com> Authored: Fri Dec 4 23:38:00 2015 +0100 Committer: Tibor17 <tibo...@lycos.com> Committed: Fri Dec 4 23:38:00 2015 +0100 ---------------------------------------------------------------------- .../maven/surefire/booter/ForkedBooter.java | 16 ++-- .../maven/surefire/junit4/JUnit4Provider.java | 9 -- .../surefire/junitcore/JUnitCoreProvider.java | 9 -- .../maven/surefire/testng/TestNGProvider.java | 98 ++++++++------------ 4 files changed, 50 insertions(+), 82 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c733075b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java ---------------------------------------------------------------------- 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 ba1c9b7..a63445d 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 @@ -139,7 +139,7 @@ public final class ForkedBooter encodeAndWriteToOutput( ( (char) BOOTERCODE_BYE ) + ",0,BYE!\n", originalOut ); originalOut.flush(); // noinspection CallToSystemExit - exit( 0, EXIT, reader ); + exit( 0, EXIT, reader, false ); } catch ( Throwable t ) { @@ -147,7 +147,7 @@ public final class ForkedBooter // noinspection UseOfSystemOutOrSystemErr t.printStackTrace( System.err ); // noinspection ProhibitedExceptionThrown,CallToSystemExit - exit( 1, EXIT, reader ); + exit( 1, EXIT, reader, false ); } finally { @@ -186,7 +186,7 @@ public final class ForkedBooter { public void update( Command command ) { - exit( 1, command.toShutdownData(), reader ); + exit( 1, command.toShutdownData(), reader, true ); } }; } @@ -200,7 +200,7 @@ public final class ForkedBooter boolean hasPing = pingDone.getAndSet( false ); if ( !hasPing ) { - exit( 1, KILL, reader ); + exit( 1, KILL, reader, true ); } } }; @@ -212,15 +212,17 @@ public final class ForkedBooter out.write( encodeBytes, 0, encodeBytes.length ); } - private static void exit( int returnCode, Shutdown shutdownType, CommandReader reader ) + private static void exit( int returnCode, Shutdown shutdownType, CommandReader reader, boolean stopReaderOnExit ) { switch ( shutdownType ) { case KILL: - reader.stop(); Runtime.getRuntime().halt( returnCode ); case EXIT: - reader.stop(); + if ( stopReaderOnExit ) + { + reader.stop(); + } launchLastDitchDaemonShutdownThread( returnCode ); System.exit( returnCode ); case DEFAULT: http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c733075b/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java ---------------------------------------------------------------------- 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 85b2a98..f7a6e30 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 @@ -189,7 +189,6 @@ public class JUnit4Provider { notifier.fireTestRunFinished( result ); notifier.removeListeners(); - closeCommandsReader(); } rethrowAnyTestMechanismFailures( result ); @@ -216,14 +215,6 @@ public class JUnit4Provider return isFailFast() && !isRerunFailingTests() ? providerParameters.getSkipAfterFailureCount() : 0; } - private void closeCommandsReader() - { - if ( commandsReader != null ) - { - commandsReader.stop(); - } - } - private CommandListener registerPleaseStopJunitListener( final Notifier notifier ) { CommandListener listener = new CommandListener() http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c733075b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java index 5e03bff..9b3e9a7 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 @@ -197,7 +197,6 @@ public class JUnitCoreProvider { runResult = reporterFactory.close(); notifier.removeListeners(); - closeCommandsReader(); } return runResult; } @@ -217,14 +216,6 @@ public class JUnitCoreProvider return isFailFast() && !isRerunFailingTests() ? providerParameters.getSkipAfterFailureCount() : 0; } - private void closeCommandsReader() - { - if ( commandsReader != null ) - { - commandsReader.stop(); - } - } - private CommandListener registerPleaseStopJunitListener( final Notifier stoppable ) { CommandListener listener = new CommandListener() http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c733075b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java ---------------------------------------------------------------------- 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 5444fde..3b263a4 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 @@ -89,78 +89,70 @@ public class TestNGProvider public RunResult invoke( Object forkTestSet ) throws TestSetFailedException { + if ( isFailFast() && commandsReader != null ) + { + registerPleaseStopListener(); + } + + if ( commandsReader != null ) + { + commandsReader.awaitStarted(); + } + + final ReporterFactory reporterFactory = providerParameters.getReporterFactory(); RunResult runResult; + try { - if ( isFailFast() && commandsReader != null ) - { - registerPleaseStopListener(); - } - if ( commandsReader != null ) + if ( isTestNGXmlTestSuite( testRequest ) ) { - commandsReader.awaitStarted(); + TestNGXmlTestSuite testNGXmlTestSuite = newXmlSuite(); + testNGXmlTestSuite.locateTestSets( testClassLoader ); + if ( forkTestSet != null && testRequest == null ) + { + testNGXmlTestSuite.execute( (String) forkTestSet, reporterFactory ); + } + else + { + testNGXmlTestSuite.execute( reporterFactory ); + } } - - final ReporterFactory reporterFactory = providerParameters.getReporterFactory(); - - try + else { - - if ( isTestNGXmlTestSuite( testRequest ) ) + if ( testsToRun == null ) { - TestNGXmlTestSuite testNGXmlTestSuite = newXmlSuite(); - testNGXmlTestSuite.locateTestSets( testClassLoader ); - if ( forkTestSet != null && testRequest == null ) + if ( forkTestSet instanceof TestsToRun ) + { + testsToRun = (TestsToRun) forkTestSet; + } + else if ( forkTestSet instanceof Class ) { - testNGXmlTestSuite.execute( (String) forkTestSet, reporterFactory ); + testsToRun = TestsToRun.fromClass( (Class<?>) forkTestSet ); } else { - testNGXmlTestSuite.execute( reporterFactory ); + testsToRun = scanClassPath(); } } - else + + if ( commandsReader != null ) { - if ( testsToRun == null ) + commandsReader.addShutdownListener( new CommandListener() { - if ( forkTestSet instanceof TestsToRun ) - { - testsToRun = (TestsToRun) forkTestSet; - } - else if ( forkTestSet instanceof Class ) - { - testsToRun = TestsToRun.fromClass( (Class<?>) forkTestSet ); - } - else + public void update( Command command ) { - testsToRun = scanClassPath(); + testsToRun.markTestSetFinished(); } - } - - if ( commandsReader != null ) - { - commandsReader.addShutdownListener( new CommandListener() - { - public void update( Command command ) - { - testsToRun.markTestSetFinished(); - } - } ); - } - TestNGDirectoryTestSuite suite = newDirectorySuite(); - suite.execute( testsToRun, reporterFactory ); + } ); } - - } - finally - { - runResult = reporterFactory.close(); + TestNGDirectoryTestSuite suite = newDirectorySuite(); + suite.execute( testsToRun, reporterFactory ); } } finally { - closeCommandsReader(); + runResult = reporterFactory.close(); } return runResult; } @@ -181,14 +173,6 @@ public class TestNGProvider return isFailFast() ? providerParameters.getSkipAfterFailureCount() : 0; } - private void closeCommandsReader() - { - if ( commandsReader != null ) - { - commandsReader.stop(); - } - } - private CommandListener registerPleaseStopListener() { CommandListener listener = new CommandListener()