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/16 13:10:36 UTC

maven-surefire git commit: [SUREFIRE] avoid registering duplicated listeners in surefire-junit4

Repository: maven-surefire
Updated Branches:
  refs/heads/master 1d7630689 -> a717b0cb4


[SUREFIRE] avoid registering duplicated listeners in surefire-junit4


Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/a717b0cb
Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/a717b0cb
Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/a717b0cb

Branch: refs/heads/master
Commit: a717b0cb4492d64b8e05054f78fae9a1a8944e6c
Parents: 1d76306
Author: Tibor17 <ti...@lycos.com>
Authored: Wed Dec 16 13:09:59 2015 +0100
Committer: Tibor17 <ti...@lycos.com>
Committed: Wed Dec 16 13:09:59 2015 +0100

----------------------------------------------------------------------
 .../maven/surefire/junit4/JUnit4Provider.java   | 45 ++++++++++++++------
 1 file changed, 33 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/a717b0cb/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 d57d4dd..b9df034 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
@@ -139,10 +139,6 @@ public class JUnit4Provider
             }
 
             Notifier notifier = new Notifier( new JUnit4RunListener( reporter ), getSkipAfterFailureCount() );
-            if ( isFailFast() )
-            {
-                notifier.addListener( new JUnit4FailFastListener( notifier ) );
-            }
             Result result = new Result();
             notifier.addListeners( customRunListeners )
                 .addListener( result.createListener() );
@@ -273,21 +269,46 @@ public class JUnit4Provider
         JUnitTestFailureListener failureListener = new JUnitTestFailureListener();
         notifier.addListener( failureListener );
         boolean hasMethodFilter = testResolver != null && testResolver.hasMethodPatterns();
-        execute( clazz, notifier, hasMethodFilter ? new TestResolverFilter() : new NullFilter() );
 
-        // Rerun failing tests if rerunFailingTestsCount is larger than 0
-        if ( isRerunFailingTests() )
+        try
         {
-            for ( int i = 0; i < rerunFailingTestsCount && !failureListener.getAllFailures().isEmpty(); i++ )
+            JUnit4FailFastListener failFastListener = null;
+            if ( isFailFast() )
+            {
+                failFastListener = new JUnit4FailFastListener( notifier );
+                notifier.addListener( failFastListener );
+            }
+
+            try
+            {
+                execute( clazz, notifier, hasMethodFilter ? new TestResolverFilter() : new NullFilter() );
+            }
+            finally
+            {
+                if ( failFastListener != null )
+                {
+                    notifier.removeListener( failFastListener );
+                }
+            }
+
+            // Rerun failing tests if rerunFailingTestsCount is larger than 0
+            if ( isRerunFailingTests() )
             {
-                Set<ClassMethod> failedTests = generateFailingTests( failureListener.getAllFailures() );
-                failureListener.reset();
-                if ( !failedTests.isEmpty() )
+                for ( int i = 0; i < rerunFailingTestsCount && !failureListener.getAllFailures().isEmpty(); i++ )
                 {
-                    executeFailedMethod( notifier, failedTests );
+                    Set<ClassMethod> failedTests = generateFailingTests( failureListener.getAllFailures() );
+                    failureListener.reset();
+                    if ( !failedTests.isEmpty() )
+                    {
+                        executeFailedMethod( notifier, failedTests );
+                    }
                 }
             }
         }
+        finally
+        {
+            notifier.removeListener( failureListener );
+        }
     }
 
     public Iterable<Class<?>> getSuites()