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 <tibo...@lycos.com> Authored: Wed Dec 16 13:09:59 2015 +0100 Committer: Tibor17 <tibo...@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()