Author: krosenvold
Date: Mon Jan 16 06:51:14 2012
New Revision: 1231848

URL: http://svn.apache.org/viewvc?rev=1231848&view=rev
Log:
o Ensured JUnit4 and JUnit47 uses same mechanism to detect test mechanism 
failures

Modified:
    
maven/surefire/trunk/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java
    
maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
    
maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java

Modified: 
maven/surefire/trunk/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java
URL: 
http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java?rev=1231848&r1=1231847&r2=1231848&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java
 (original)
+++ 
maven/surefire/trunk/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java
 Mon Jan 16 06:51:14 2012
@@ -24,17 +24,21 @@ import java.util.regex.Pattern;
 import org.apache.maven.surefire.report.ReportEntry;
 import org.apache.maven.surefire.report.RunListener;
 import org.apache.maven.surefire.report.SimpleReportEntry;
+import org.apache.maven.surefire.testset.TestSetFailedException;
 
 import org.junit.runner.Description;
+import org.junit.runner.Result;
 import org.junit.runner.notification.Failure;
 
 public class JUnit4RunListener
     extends org.junit.runner.notification.RunListener
 {
     private static final Pattern PARENS = Pattern.compile( "^" + "[^\\(\\)]+" 
//non-parens
-                                                               + "\\((" // 
then an open-paren (start matching a group)
+                                                               + "\\(("
+                                                               // then an 
open-paren (start matching a group)
                                                                + 
"[^\\\\(\\\\)]+" //non-parens
-                                                               + ")\\)" + "$" 
); // then a close-paren (end group match)
+                                                               + ")\\)" + "$" 
);
+        // then a close-paren (end group match)
 
     protected final RunListener reporter;
 
@@ -88,9 +92,9 @@ public class JUnit4RunListener
     public void testFailure( Failure failure )
         throws Exception
     {
-        ReportEntry report =
-            new SimpleReportEntry( extractClassName( failure.getDescription() 
), failure.getTestHeader(),
-                                   new JUnit4StackTraceWriter( failure ) );
+        ReportEntry report = new SimpleReportEntry( extractClassName( 
failure.getDescription() ),
+                                                    failure.getTestHeader(),
+                                                    new 
JUnit4StackTraceWriter( failure ) );
 
         if ( failure.getException() instanceof AssertionError )
         {
@@ -128,7 +132,8 @@ public class JUnit4RunListener
 
     private SimpleReportEntry createReportEntry( Description description )
     {
-        return new SimpleReportEntry( extractClassName( description ), 
description.getDisplayName() );
+        return new SimpleReportEntry( extractClassName( description ),
+                                      description.getDisplayName() );
     }
 
 
@@ -142,4 +147,26 @@ public class JUnit4RunListener
         }
         return m.group( 1 );
     }
+
+
+    public static void rethrowAnyTestMechanismFailures( Result run )
+        throws TestSetFailedException
+    {
+        if ( run.getFailureCount() > 0 )
+        {
+            for ( Failure failure : run.getFailures() )
+            {
+                if ( isFailureInsideJUnitItself( failure ) )
+                {
+                    final Throwable exception = failure.getException();
+                    throw new TestSetFailedException( exception );
+                }
+            }
+        }
+    }
+
+    private static boolean isFailureInsideJUnitItself( Failure failure )
+    {
+        return failure.getDescription().getDisplayName().equals( "Test 
mechanism" );
+    }
 }

Modified: 
maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
URL: 
http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java?rev=1231848&r1=1231847&r2=1231848&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
 (original)
+++ 
maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
 Mon Jan 16 06:51:14 2012
@@ -116,6 +116,8 @@ public class JUnit4Provider
 
         runNotifer.fireTestRunFinished( result );
 
+        JUnit4RunListener.rethrowAnyTestMechanismFailures( result );
+
         closeRunNotifer( jUnit4TestSetReporter, customRunListeners );
 
         return reporterFactory.close();

Modified: 
maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java
URL: 
http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java?rev=1231848&r1=1231847&r2=1231848&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java
 (original)
+++ 
maven/surefire/trunk/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java
 Mon Jan 16 06:51:14 2012
@@ -21,6 +21,7 @@ package org.apache.maven.surefire.junitc
 
 import java.util.List;
 import java.util.concurrent.ExecutionException;
+import org.apache.maven.surefire.common.junit4.JUnit4RunListener;
 import org.apache.maven.surefire.testset.TestSetFailedException;
 import org.apache.maven.surefire.util.TestsToRun;
 
@@ -29,7 +30,6 @@ import org.junit.runner.JUnitCore;
 import org.junit.runner.Request;
 import org.junit.runner.Result;
 import org.junit.runner.manipulation.Filter;
-import org.junit.runner.notification.Failure;
 import org.junit.runner.notification.RunListener;
 
 /**
@@ -60,18 +60,7 @@ class JUnitCoreWrapper
         try
         {
             final Result run = junitCore.run( req );
-
-            if ( run.getFailureCount() > 0 )
-            {
-                for ( Failure failure : run.getFailures() )
-                {
-                    if ( isFailureInsideJUnitItself( failure ) )
-                    {
-                        final Throwable exception = failure.getException();
-                        throw new TestSetFailedException( exception );
-                    }
-                }
-            }
+            JUnit4RunListener.rethrowAnyTestMechanismFailures( run );
         }
         finally
         {
@@ -83,11 +72,6 @@ class JUnitCoreWrapper
         }
     }
 
-    private static boolean isFailureInsideJUnitItself( Failure failure )
-    {
-        return failure.getDescription().getDisplayName().equals( "Test 
mechanism" );
-    }
-
     private static void closeIfConfigurable( Computer computer )
         throws TestSetFailedException
     {


Reply via email to