Author: brett
Date: Mon May  1 01:10:38 2006
New Revision: 398546

URL: http://svn.apache.org/viewcvs?rev=398546&view=rev
Log:
[MSUREFIRE-87] trim stack traces back to just the test class by default

Added:
    
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/PojoStackTraceWriter.java
   (with props)
    
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/StackTraceWriter.java
   (with props)
    
maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitStackTraceWriter.java
   (with props)
    
maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/TestListenerInvocationHandler.java
   (contents, props changed)
      - copied, changed from r398530, 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestListenerInvocationHandler.java
    
maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGStackTraceWriter.java
   (with props)
Removed:
    
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestListenerInvocationHandler.java
Modified:
    
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractConsoleReporter.java
    
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractFileReporter.java
    
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractReporter.java
    
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractTextReporter.java
    
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/BriefConsoleReporter.java
    
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/BriefFileReporter.java
    
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleReporter.java
    
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/DetailedConsoleReporter.java
    
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/FileReporter.java
    
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ForkingConsoleReporter.java
    
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java
    
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/XMLReporter.java
    
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/testset/PojoTestSet.java
    
maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/TestReport.java
    
maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/XMLReporterTest.java
    
maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitTestSet.java
    
maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGReporter.java

Modified: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractConsoleReporter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractConsoleReporter.java?rev=398546&r1=398545&r2=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractConsoleReporter.java
 (original)
+++ 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractConsoleReporter.java
 Mon May  1 01:10:38 2006
@@ -30,11 +30,11 @@
 {
     protected static final int BUFFER_SIZE = 4096;
 
-    protected AbstractConsoleReporter( String format )
+    protected AbstractConsoleReporter( String format, Boolean trimStackTrace )
     {
         // TODO: use logger
-        super( new PrintWriter( new OutputStreamWriter( new 
BufferedOutputStream( System.out, BUFFER_SIZE ) ) ),
-               format );
+        super( new PrintWriter( new OutputStreamWriter( new 
BufferedOutputStream( System.out, BUFFER_SIZE ) ) ), format,
+               trimStackTrace );
     }
 
     public void testSetStarting( ReportEntry report )
@@ -80,7 +80,7 @@
         writer.println( report.getSource().getClass().getName() );
         writer.println( report.getName() );
         writer.println( report.getMessage() );
-        writer.println( report.getThrowable().getMessage() );
+        writer.println( getStackTrace( report ) );
         writer.flush();
     }
 }

Modified: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractFileReporter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractFileReporter.java?rev=398546&r1=398545&r2=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractFileReporter.java
 (original)
+++ 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractFileReporter.java
 Mon May  1 01:10:38 2006
@@ -31,9 +31,9 @@
 {
     private File reportsDirectory;
 
-    protected AbstractFileReporter( File reportsDirectory, String format )
+    protected AbstractFileReporter( File reportsDirectory, String format, 
Boolean trimStackTrace )
     {
-        super( format );
+        super( format, trimStackTrace );
 
         this.reportsDirectory = reportsDirectory;
     }

Modified: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractReporter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractReporter.java?rev=398546&r1=398545&r2=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractReporter.java
 (original)
+++ 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractReporter.java
 Mon May  1 01:10:38 2006
@@ -16,8 +16,6 @@
  * limitations under the License.
  */
 
-import java.io.PrintWriter;
-import java.io.StringWriter;
 import java.text.NumberFormat;
 import java.util.Locale;
 
@@ -48,10 +46,18 @@
 
     protected int skipped;
 
+    private boolean trimStackTrace;
+
     // ----------------------------------------------------------------------
     // Report interface
     // ----------------------------------------------------------------------
 
+
+    protected AbstractReporter( Boolean trimStackTrace )
+    {
+        this.trimStackTrace = trimStackTrace.booleanValue();
+    }
+
     public void writeFooter( String footer )
     {
         writeMessage( footer );
@@ -184,14 +190,9 @@
      * @param report ReportEntry object.
      * @return stacktrace as string.
      */
-    protected static String getStackTrace( ReportEntry report )
+    protected String getStackTrace( ReportEntry report )
     {
-        StringWriter writer = new StringWriter();
-
-        report.getThrowable().printStackTrace( new PrintWriter( writer ) );
-
-        writer.flush();
-
-        return writer.toString();
+        return trimStackTrace ? 
report.getStackTraceWriter().writeTrimmedTraceToString()
+            : report.getStackTraceWriter().writeTraceToString();
     }
 }

Modified: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractTextReporter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractTextReporter.java?rev=398546&r1=398545&r2=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractTextReporter.java
 (original)
+++ 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractTextReporter.java
 Mon May  1 01:10:38 2006
@@ -41,13 +41,17 @@
 
     private List testResults;
 
-    protected AbstractTextReporter( String format )
+    protected AbstractTextReporter( String format, Boolean trimStackTrace )
     {
+        super( trimStackTrace );
+
         this.format = format;
     }
 
-    protected AbstractTextReporter( PrintWriter writer, String format )
+    protected AbstractTextReporter( PrintWriter writer, String format, Boolean 
trimStackTrace )
     {
+        super( trimStackTrace );
+
         this.writer = writer;
 
         this.format = format;

Modified: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/BriefConsoleReporter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/BriefConsoleReporter.java?rev=398546&r1=398545&r2=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/BriefConsoleReporter.java
 (original)
+++ 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/BriefConsoleReporter.java
 Mon May  1 01:10:38 2006
@@ -26,8 +26,8 @@
 public class BriefConsoleReporter
     extends AbstractConsoleReporter
 {
-    public BriefConsoleReporter()
+    public BriefConsoleReporter( Boolean trimStackTrace )
     {
-        super( BRIEF );
+        super( BRIEF, trimStackTrace );
     }
 }

Modified: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/BriefFileReporter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/BriefFileReporter.java?rev=398546&r1=398545&r2=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/BriefFileReporter.java
 (original)
+++ 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/BriefFileReporter.java
 Mon May  1 01:10:38 2006
@@ -27,8 +27,8 @@
 public class BriefFileReporter
     extends AbstractFileReporter
 {
-    public BriefFileReporter( File reportsDirectory )
+    public BriefFileReporter( File reportsDirectory, Boolean trimStackTrace )
     {
-        super( reportsDirectory, BRIEF );
+        super( reportsDirectory, BRIEF, trimStackTrace );
     }
 }

Modified: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleReporter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleReporter.java?rev=398546&r1=398545&r2=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleReporter.java
 (original)
+++ 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleReporter.java
 Mon May  1 01:10:38 2006
@@ -25,8 +25,8 @@
 public class ConsoleReporter
     extends AbstractConsoleReporter
 {
-    public ConsoleReporter()
+    public ConsoleReporter( Boolean trimStackTrace )
     {
-        super( SUMMARY );
+        super( SUMMARY, trimStackTrace );
     }
 }

Modified: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/DetailedConsoleReporter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/DetailedConsoleReporter.java?rev=398546&r1=398545&r2=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/DetailedConsoleReporter.java
 (original)
+++ 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/DetailedConsoleReporter.java
 Mon May  1 01:10:38 2006
@@ -25,8 +25,8 @@
 public class DetailedConsoleReporter
     extends AbstractConsoleReporter
 {
-    public DetailedConsoleReporter()
+    public DetailedConsoleReporter( Boolean trimStackTrace )
     {
-        super( PLAIN );
+        super( PLAIN, trimStackTrace );
     }
 }

Modified: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/FileReporter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/FileReporter.java?rev=398546&r1=398545&r2=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/FileReporter.java
 (original)
+++ 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/FileReporter.java
 Mon May  1 01:10:38 2006
@@ -27,8 +27,8 @@
 public class FileReporter
     extends AbstractFileReporter
 {
-    public FileReporter( File reportsDirectory )
+    public FileReporter( File reportsDirectory, Boolean trimStackTrace )
     {
-        super( reportsDirectory, PLAIN );
+        super( reportsDirectory, PLAIN, trimStackTrace );
     }
 }

Modified: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ForkingConsoleReporter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ForkingConsoleReporter.java?rev=398546&r1=398545&r2=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ForkingConsoleReporter.java
 (original)
+++ 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ForkingConsoleReporter.java
 Mon May  1 01:10:38 2006
@@ -25,6 +25,11 @@
 
     public static final String FORKING_PREFIX_FOOTER = "@FL";
 
+    public ForkingConsoleReporter( Boolean trimStackTrace )
+    {
+        super( trimStackTrace );
+    }
+
     public void writeHeading( String message )
     {
         writer.print( FORKING_PREFIX_HEADING );

Added: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/PojoStackTraceWriter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/PojoStackTraceWriter.java?rev=398546&view=auto
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/PojoStackTraceWriter.java
 (added)
+++ 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/PojoStackTraceWriter.java
 Mon May  1 01:10:38 2006
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+package org.apache.maven.surefire.report;
+
+import org.codehaus.plexus.util.StringUtils;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+/**
+ * Write the trace out for a POJO test.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
+ */
+public class PojoStackTraceWriter
+    implements StackTraceWriter
+{
+    private final Throwable t;
+
+    protected final String testClass;
+
+    protected final String testMethod;
+
+    public PojoStackTraceWriter( String testClass, String testMethod, 
Throwable t )
+    {
+        this.testClass = testClass;
+        this.testMethod = testMethod;
+        this.t = t;
+    }
+
+    public String writeTraceToString()
+    {
+        StringWriter w = new StringWriter();
+        t.printStackTrace( new PrintWriter( w ) );
+        w.flush();
+        return w.toString();
+    }
+
+    public String writeTrimmedTraceToString()
+    {
+        String text = writeTraceToString();
+
+        String marker = "at " + testClass + "." + testMethod;
+
+        String[] lines = StringUtils.split( text, "\n" );
+        int lastLine = lines.length - 1;
+        // skip first
+        for ( int i = 1; i < lines.length; i++ )
+        {
+            if ( lines[i].trim().startsWith( marker ) )
+            {
+                lastLine = i;
+            }
+        }
+
+        StringBuffer trace = new StringBuffer();
+        for ( int i = 0; i <= lastLine; i++ )
+        {
+            trace.append( lines[i] );
+            trace.append( "\n" );
+        }
+        return trace.toString();
+    }
+
+    public Throwable getThrowable()
+    {
+        return t;
+    }
+}

Propchange: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/PojoStackTraceWriter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/PojoStackTraceWriter.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java?rev=398546&r1=398545&r2=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java
 (original)
+++ 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java
 Mon May  1 01:10:38 2006
@@ -26,7 +26,7 @@
 
     private String message;
 
-    private Throwable throwable;
+    private StackTraceWriter stackTraceWriter;
 
     public ReportEntry( Object source, String name, String message )
     {
@@ -38,12 +38,12 @@
         this( source, name, group, message, null );
     }
 
-    public ReportEntry( Object source, String name, String message, Throwable 
throwable )
+    public ReportEntry( Object source, String name, String message, 
StackTraceWriter stackTraceWriter )
     {
-        this( source, name, null, message, throwable );
+        this( source, name, null, message, stackTraceWriter );
     }
 
-    public ReportEntry( Object source, String name, String group, String 
message, Throwable throwable )
+    public ReportEntry( Object source, String name, String group, String 
message, StackTraceWriter stackTraceWriter )
     {
         if ( source == null )
         {
@@ -66,7 +66,7 @@
 
         this.message = message;
 
-        this.throwable = throwable;
+        this.stackTraceWriter = stackTraceWriter;
     }
 
     public Object getSource()
@@ -89,9 +89,9 @@
         return message;
     }
 
-    public Throwable getThrowable()
+    public StackTraceWriter getStackTraceWriter()
     {
-        return throwable;
+        return stackTraceWriter;
     }
 }
 

Added: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/StackTraceWriter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/StackTraceWriter.java?rev=398546&view=auto
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/StackTraceWriter.java
 (added)
+++ 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/StackTraceWriter.java
 Mon May  1 01:10:38 2006
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+package org.apache.maven.surefire.report;
+
+/**
+ * Ability to write a stack trace, filtered to omit locations inside Surefire 
and Maven.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
+ */
+public interface StackTraceWriter
+{
+    /**
+     * Write the throwable to a string, without trimming.
+     *
+     * @return the trace
+     */
+    String writeTraceToString();
+
+    /**
+     * Write the throwable to a string, trimming extra locations.
+     *
+     * @return the trace
+     */
+    String writeTrimmedTraceToString();
+
+    /**
+     * Retrieve the throwable for this writer.
+     *
+     * @return the throwable
+     */
+    Throwable getThrowable();
+}

Propchange: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/StackTraceWriter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/StackTraceWriter.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/XMLReporter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/XMLReporter.java?rev=398546&r1=398545&r2=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/XMLReporter.java
 (original)
+++ 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/XMLReporter.java
 Mon May  1 01:10:38 2006
@@ -53,8 +53,10 @@
 
     private List results = Collections.synchronizedList( new ArrayList() );
 
-    public XMLReporter( File reportsDirectory )
+    public XMLReporter( File reportsDirectory, Boolean trimStackTrace )
     {
+        super( trimStackTrace );
+
         this.reportsDirectory = reportsDirectory;
     }
 
@@ -181,7 +183,7 @@
 
         String stackTrace = getStackTrace( report );
 
-        Throwable t = report.getThrowable();
+        Throwable t = report.getStackTraceWriter().getThrowable();
 
         if ( t != null )
         {

Modified: 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/testset/PojoTestSet.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/testset/PojoTestSet.java?rev=398546&r1=398545&r2=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/testset/PojoTestSet.java
 (original)
+++ 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/testset/PojoTestSet.java
 Mon May  1 01:10:38 2006
@@ -17,6 +17,7 @@
  */
 
 import org.apache.maven.surefire.Surefire;
+import org.apache.maven.surefire.report.PojoStackTraceWriter;
 import org.apache.maven.surefire.report.ReportEntry;
 import org.apache.maven.surefire.report.ReporterManager;
 
@@ -129,7 +130,9 @@
 
             String stringToPrint = msgFmt.format( stringArgs );
 
-            report = new ReportEntry( testObject, getTestName( 
userFriendlyMethodName ), stringToPrint, e );
+            report = new ReportEntry( testObject, getTestName( 
userFriendlyMethodName ), stringToPrint,
+                                      new PojoStackTraceWriter( 
testObject.getClass().getName(), method.getName(),
+                                                                e ) );
 
             reportManager.testFailed( report );
 
@@ -161,7 +164,8 @@
                 msg = t.toString();
             }
 
-            report = new ReportEntry( testObject, getTestName( 
userFriendlyMethodName ), msg, t );
+            report = new ReportEntry( testObject, getTestName( 
userFriendlyMethodName ), msg, new PojoStackTraceWriter(
+                testObject.getClass().getName(), method.getName(), t ) );
 
             reportManager.testFailed( report );
             // Don't return  here, because tearDownFixture should be called 
even
@@ -176,7 +180,8 @@
                 msg = t.toString();
             }
 
-            report = new ReportEntry( testObject, getTestName( 
userFriendlyMethodName ), msg, t );
+            report = new ReportEntry( testObject, getTestName( 
userFriendlyMethodName ), msg, new PojoStackTraceWriter(
+                testObject.getClass().getName(), method.getName(), t ) );
 
             reportManager.testFailed( report );
             // Don't return  here, because tearDownFixture should be called 
even
@@ -198,7 +203,9 @@
 
             String stringToPrint = msgFmt.format( stringArgs );
 
-            report = new ReportEntry( testObject, getTestName( 
userFriendlyMethodName ), stringToPrint, t );
+            report = new ReportEntry( testObject, getTestName( 
userFriendlyMethodName ), stringToPrint,
+                                      new PojoStackTraceWriter( 
testObject.getClass().getName(), method.getName(),
+                                                                t ) );
 
             reportManager.testFailed( report );
 
@@ -225,7 +232,7 @@
             throw new NullPointerException( "testMethodName is null" );
         }
 
-        return getTestClass() + "." + testMethodName;
+        return getTestClass().getName() + "." + testMethodName;
     }
 
     public void setUpFixture()

Modified: 
maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/TestReport.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/TestReport.java?rev=398546&r1=398545&r2=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/TestReport.java
 (original)
+++ 
maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/TestReport.java
 Mon May  1 01:10:38 2006
@@ -26,6 +26,11 @@
 public class TestReport
     extends AbstractReporter
 {
+    public TestReport()
+    {
+        super( Boolean.TRUE );
+    }
+
     public void writeMessage( String message )
     {
         System.out.println( "TestReport::writeMessage -> " + message );

Modified: 
maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/XMLReporterTest.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/XMLReporterTest.java?rev=398546&r1=398545&r2=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/XMLReporterTest.java
 (original)
+++ 
maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/report/XMLReporterTest.java
 Mon May  1 01:10:38 2006
@@ -34,9 +34,10 @@
         throws Exception
     {
         super.setUp();
-        reporter = new XMLReporter( null );
+        reporter = new XMLReporter( null, Boolean.TRUE );
         message = "junit.framework.AssertionFailedError";
-        reportEntry = new ReportEntry( this, "XMLReporterTest", message, new 
AssertionFailedError() );
+        reportEntry = new ReportEntry( this, "XMLReporterTest", message,
+                                       new PojoStackTraceWriter( "", "", new 
AssertionFailedError() ) );
     }
 
     /*

Added: 
maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitStackTraceWriter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitStackTraceWriter.java?rev=398546&view=auto
==============================================================================
--- 
maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitStackTraceWriter.java
 (added)
+++ 
maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitStackTraceWriter.java
 Mon May  1 01:10:38 2006
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+package org.apache.maven.surefire.junit;
+
+import org.apache.maven.surefire.report.PojoStackTraceWriter;
+
+/**
+ * Stack trace writer for JUnit tests.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
+ */
+public class JUnitStackTraceWriter
+    extends PojoStackTraceWriter
+{
+    public JUnitStackTraceWriter( String testClass, String testName, Throwable 
throwable )
+    {
+        super( testClass, testName, throwable );
+    }
+}

Propchange: 
maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitStackTraceWriter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitStackTraceWriter.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: 
maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitTestSet.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitTestSet.java?rev=398546&r1=398545&r2=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitTestSet.java
 (original)
+++ 
maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitTestSet.java
 Mon May  1 01:10:38 2006
@@ -18,7 +18,6 @@
 
 import org.apache.maven.surefire.report.ReporterManager;
 import org.apache.maven.surefire.testset.AbstractTestSet;
-import org.apache.maven.surefire.testset.TestListenerInvocationHandler;
 import org.apache.maven.surefire.testset.TestSetFailedException;
 
 import java.lang.reflect.Constructor;

Copied: 
maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/TestListenerInvocationHandler.java
 (from r398530, 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestListenerInvocationHandler.java)
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/TestListenerInvocationHandler.java?p2=maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/TestListenerInvocationHandler.java&p1=maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestListenerInvocationHandler.java&r1=398530&r2=398546&rev=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestListenerInvocationHandler.java
 (original)
+++ 
maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/TestListenerInvocationHandler.java
 Mon May  1 01:10:38 2006
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.testset;
+package org.apache.maven.surefire.junit;
 
 /*
  * Copyright 2001-2006 The Apache Software Foundation.
@@ -20,6 +20,7 @@
 import org.apache.maven.surefire.report.ReporterManager;
 
 import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.HashSet;
 import java.util.Set;
@@ -40,6 +41,10 @@
 
     private ReporterManager reportManager;
 
+    private static final Class[] EMPTY_CLASS_ARRAY = new Class[]{};
+
+    private static final String[] EMPTY_STRING_ARRAY = new String[]{};
+
     private static class FailedTest
     {
         private Object testThatFailed;
@@ -150,17 +155,29 @@
 
     // Handler for TestListener.addFailure(Test, Throwable)
     private void handleAddError( Object[] args )
+        throws IllegalAccessException, NoSuchMethodException, 
InvocationTargetException
     {
-        ReportEntry report = new ReportEntry( args[0], args[0].toString(), 
args[1].toString(), (Throwable) args[1] );
+        ReportEntry report =
+            new ReportEntry( args[0], args[0].toString(), args[1].toString(), 
getStackTraceWriter( args ) );
 
         reportManager.testError( report );
 
         failedTestsSet.add( new FailedTest( args[0], Thread.currentThread() ) 
);
     }
 
+    private JUnitStackTraceWriter getStackTraceWriter( Object[] args )
+        throws NoSuchMethodException, IllegalAccessException, 
InvocationTargetException
+    {
+        Method m = args[0].getClass().getMethod( "getName", EMPTY_CLASS_ARRAY 
);
+        String testName = (String) m.invoke( args[0], EMPTY_STRING_ARRAY );
+        return new JUnitStackTraceWriter( args[0].getClass().getName(), 
testName, (Throwable) args[1] );
+    }
+
     private void handleAddFailure( Object[] args )
+        throws IllegalAccessException, NoSuchMethodException, 
InvocationTargetException
     {
-        ReportEntry report = new ReportEntry( args[0], args[0].toString(), 
args[1].toString(), (Throwable) args[1] );
+        ReportEntry report =
+            new ReportEntry( args[0], args[0].toString(), args[1].toString(), 
getStackTraceWriter( args ) );
 
         reportManager.testFailed( report );
 

Propchange: 
maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/TestListenerInvocationHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/TestListenerInvocationHandler.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: 
maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGReporter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGReporter.java?rev=398546&r1=398545&r2=398546&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGReporter.java
 (original)
+++ 
maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGReporter.java
 Mon May  1 01:10:38 2006
@@ -77,7 +77,7 @@
         String group = groupString( result.getMethod().getGroups(), 
result.getTestClass().getName() );
         ReportEntry report = new ReportEntry( source, 
result.getTestClass().getName() + "#" +
             result.getMethod().getMethodName(), group, rawString );
-        
+
         reportManager.testStarting( report );
     }
 
@@ -91,7 +91,8 @@
     {
         String rawString = bundle.getString( "executeException" );
 
-        ReportEntry report = new ReportEntry( source, result.getName(), 
rawString, result.getThrowable() );
+        ReportEntry report =
+            new ReportEntry( source, result.getName(), rawString, new 
TestNGStackTraceWriter( result ) );
 
         reportManager.testFailed( report );
     }
@@ -107,7 +108,8 @@
     {
         String rawString = bundle.getString( "executeException" );
 
-        ReportEntry report = new ReportEntry( source, result.getName(), 
rawString, result.getThrowable() );
+        ReportEntry report =
+            new ReportEntry( source, result.getName(), rawString, new 
TestNGStackTraceWriter( result ) );
 
         reportManager.testError( report );
     }

Added: 
maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGStackTraceWriter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGStackTraceWriter.java?rev=398546&view=auto
==============================================================================
--- 
maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGStackTraceWriter.java
 (added)
+++ 
maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGStackTraceWriter.java
 Mon May  1 01:10:38 2006
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+package org.apache.maven.surefire.testng;
+
+import org.apache.maven.surefire.report.PojoStackTraceWriter;
+import org.codehaus.plexus.util.StringUtils;
+import org.testng.ITestResult;
+
+/**
+ * Write out stack traces for TestNG.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
+ */
+public class TestNGStackTraceWriter
+    extends PojoStackTraceWriter
+{
+    public TestNGStackTraceWriter( ITestResult result )
+    {
+        super( result.getTestClass().getRealClass().getName(), 
result.getMethod().getMethodName(),
+               result.getThrowable() );
+    }
+
+    public String writeTrimmedTraceToString()
+    {
+        String text = writeTraceToString();
+
+        String marker = "at " + testClass + "." + testMethod;
+
+        String[] lines = StringUtils.split( text, "\n" );
+        int lastLine = lines.length - 1;
+        // skip first
+        for ( int i = 1; i < lines.length; i++ )
+        {
+            if ( lines[i].trim().startsWith( marker ) )
+            {
+                lastLine = i;
+            }
+        }
+
+        StringBuffer trace = new StringBuffer();
+        for ( int i = 0; i <= lastLine; i++ )
+        {
+            // if you call assertions from JUnit tests in TestNG, it ends up 
at the top of the trace
+            if ( !lines[i].trim().startsWith( "at junit.framework.Assert" ) )
+            {
+                trace.append( lines[i] );
+                trace.append( "\n" );
+            }
+        }
+
+        return trace.toString();
+    }
+}

Propchange: 
maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGStackTraceWriter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/surefire/trunk/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGStackTraceWriter.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision


Reply via email to