You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ti...@apache.org on 2015/12/04 23:40:37 UTC

maven-surefire git commit: [SUREFIRE-1197] Surefire 2.19 breaks tests under Windows due to fork problem

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 <ti...@lycos.com>
Authored: Fri Dec 4 23:38:00 2015 +0100
Committer: Tibor17 <ti...@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()