You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2012/01/14 13:19:43 UTC

svn commit: r1231490 - in /maven/surefire/trunk: surefire-api/src/main/java/org/apache/maven/surefire/booter/ surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/jiras/ surefire-integration-tests/src/test/resources/surefire-818-ignor...

Author: krosenvold
Date: Sat Jan 14 12:19:42 2012
New Revision: 1231490

URL: http://svn.apache.org/viewvc?rev=1231490&view=rev
Log:
[SUREFIRE-818] NPE in reporting causes ignoring of subsequent tests

Test-project submitted by Cyril Vidal, fixed with integration test.

Added:
    maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/jiras/Surefire818NpeIgnoresTestsIT.java   (with props)
    maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/
    maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/pom.xml   (with props)
    maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/
    maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/
    maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/
    maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/
    maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/
    maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/FirstTest.java   (with props)
    maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/IgnoredTest.java   (with props)
    maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/Message.java   (with props)
    maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/MyService.java   (with props)
    maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/MyServiceImpl.java   (with props)
Modified:
    maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingRunListener.java
    maven/surefire/trunk/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4StackTraceWriter.java

Modified: maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingRunListener.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingRunListener.java?rev=1231490&r1=1231489&r2=1231490&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingRunListener.java (original)
+++ maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingRunListener.java Sat Jan 14 12:19:42 2012
@@ -291,7 +291,7 @@ public class ForkingRunListener
 
     private ForkingRunListener nullableEncoding( StringBuffer stringBuffer, String source )
     {
-        if ( source == null || source.length() == 0)
+        if ( source == null || source.length() == 0 )
         {
             stringBuffer.append( "null" );
         }
@@ -311,7 +311,7 @@ public class ForkingRunListener
             final Throwable throwable = stackTraceWriter.getThrowable();
             if ( throwable != null )
             {
-                String message = throwable.getLocalizedMessage();
+                String message = safeGetLocalizedMessage( throwable );
                 nullableEncoding( stringBuffer, message );
             }
             comma( stringBuffer );
@@ -321,4 +321,16 @@ public class ForkingRunListener
                 : stackTraceWriter.writeTraceToString() );
         }
     }
+
+    private String safeGetLocalizedMessage( Throwable throwable )
+    {
+        try
+        {
+            return throwable.getLocalizedMessage();
+        }
+        catch ( Throwable t )
+        {
+            return t.getLocalizedMessage();
+        }
+    }
 }

Added: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/jiras/Surefire818NpeIgnoresTestsIT.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/jiras/Surefire818NpeIgnoresTestsIT.java?rev=1231490&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/jiras/Surefire818NpeIgnoresTestsIT.java (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/jiras/Surefire818NpeIgnoresTestsIT.java Sat Jan 14 12:19:42 2012
@@ -0,0 +1,36 @@
+package org.apache.maven.surefire.its.jiras;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.surefire.its.fixture.SurefireIntegrationTestCase;
+
+/**
+ * SUREFIRE-818
+ *
+ * @author Kristian Rosenvold
+ */
+public class Surefire818NpeIgnoresTestsIT
+    extends SurefireIntegrationTestCase
+{
+    public void testBuildFailingWhenErrors()
+    {
+        unpack("surefire-818-ignored-tests-on-npe").executeTestWithFailure().assertTestSuiteResults(  2 ,0 , 1, 0 );
+    }
+}
\ No newline at end of file

Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/jiras/Surefire818NpeIgnoresTestsIT.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/pom.xml
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/pom.xml?rev=1231490&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/pom.xml (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/pom.xml Sat Jan 14 12:19:42 2012
@@ -0,0 +1,32 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>test</groupId>
+    <artifactId>cyril</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>cyril</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.4</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>jmock</groupId>
+            <artifactId>jmock</artifactId>
+            <version>1.1.0</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>${surefire.version}</version>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/FirstTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/FirstTest.java?rev=1231490&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/FirstTest.java (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/FirstTest.java Sat Jan 14 12:19:42 2012
@@ -0,0 +1,36 @@
+package cyril.test;
+
+
+import org.jmock.Mock;
+import org.jmock.MockObjectTestCase;
+import org.junit.Test;
+
+
+public class FirstTest
+    extends MockObjectTestCase
+{
+
+    private Mock myServiceMock;
+
+    @Override
+    protected void setUp()
+        throws Exception
+    {
+        myServiceMock = mock( MyService.class );
+    }
+
+
+    @Test
+    public void test()
+    {
+
+        Message myMessage = new Message( "MyMessage" );
+        // Expectations
+        myServiceMock.expects( once() ).method( "writeMessage" ).with( eq( myMessage ) ).will(
+            returnValue( myMessage ) );
+
+        ( (MyService) myServiceMock.proxy() ).writeMessage( null );
+
+    }
+
+}

Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/FirstTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/IgnoredTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/IgnoredTest.java?rev=1231490&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/IgnoredTest.java (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/IgnoredTest.java Sat Jan 14 12:19:42 2012
@@ -0,0 +1,16 @@
+package cyril.test;
+
+import org.junit.Test;
+
+
+public class IgnoredTest
+{
+
+
+    @Test
+    public void test()
+    {
+        System.out.println( "My test is running fine" );
+    }
+
+}

Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/IgnoredTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/Message.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/Message.java?rev=1231490&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/Message.java (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/Message.java Sat Jan 14 12:19:42 2012
@@ -0,0 +1,18 @@
+package cyril.test;
+
+public class Message
+{
+
+    private String content;
+
+    public Message( String content )
+    {
+        this.content = content;
+    }
+
+    public int hashCode()
+    {
+        throw new NullPointerException();
+    }
+
+}

Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/Message.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/MyService.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/MyService.java?rev=1231490&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/MyService.java (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/MyService.java Sat Jan 14 12:19:42 2012
@@ -0,0 +1,8 @@
+package cyril.test;
+
+public interface MyService
+{
+
+    public Message writeMessage( Message aMessage );
+
+}

Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/MyService.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/MyServiceImpl.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/MyServiceImpl.java?rev=1231490&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/MyServiceImpl.java (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/MyServiceImpl.java Sat Jan 14 12:19:42 2012
@@ -0,0 +1,12 @@
+package cyril.test;
+
+public class MyServiceImpl
+    implements MyService
+{
+
+    public Message writeMessage( Message aMessage )
+    {
+        return aMessage;
+    }
+
+}

Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-818-ignored-tests-on-npe/src/test/java/cyril/test/MyServiceImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: maven/surefire/trunk/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4StackTraceWriter.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4StackTraceWriter.java?rev=1231490&r1=1231489&r2=1231490&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4StackTraceWriter.java (original)
+++ maven/surefire/trunk/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4StackTraceWriter.java Sat Jan 14 12:19:42 2012
@@ -19,7 +19,9 @@ package org.apache.maven.surefire.common
  * under the License.
  */
 
+import org.apache.maven.surefire.report.PojoStackTraceWriter;
 import org.apache.maven.surefire.report.StackTraceWriter;
+
 import org.junit.runner.notification.Failure;
 
 /**
@@ -61,7 +63,14 @@ public class JUnit4StackTraceWriter
      */
     public String writeTrimmedTraceToString()
     {
-        return junitFailure.getTrace();
+        try
+        {
+            return junitFailure.getTrace();
+        }
+        catch ( Throwable t )
+        {
+            return new PojoStackTraceWriter( "", "", t ).writeTrimmedTraceToString();
+        }
     }
 
     /**