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 2013/03/06 19:18:08 UTC
git commit: [SUREFIRE-967] ArrayIndexOutOfBounds in
SmartStackTraceParser
Updated Branches:
refs/heads/master 348e203d6 -> c513cbc5b
[SUREFIRE-967] ArrayIndexOutOfBounds in SmartStackTraceParser
Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/c513cbc5
Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/c513cbc5
Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/c513cbc5
Branch: refs/heads/master
Commit: c513cbc5b76619a6164e2ef3a79511d81dea878b
Parents: 348e203
Author: Kristian Rosenvold <kr...@apache.org>
Authored: Wed Mar 6 19:17:38 2013 +0100
Committer: Kristian Rosenvold <kr...@apache.org>
Committed: Wed Mar 6 19:17:38 2013 +0100
----------------------------------------------------------------------
pom.xml | 2 +-
.../surefire/report/SmartStackTraceParser.java | 9 +++++-
.../surefire/report/SmartStackTraceParserTest.java | 22 +++++++++++++++
3 files changed, 30 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c513cbc5/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 1465f17..bb5ae5f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -241,7 +241,7 @@
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-shared-utils</artifactId>
- <version>0.3</version>
+ <version>0.3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c513cbc5/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/SmartStackTraceParser.java
----------------------------------------------------------------------
diff --git a/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/SmartStackTraceParser.java b/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/SmartStackTraceParser.java
index 4923eb9..13bc6c9 100644
--- a/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/SmartStackTraceParser.java
+++ b/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/SmartStackTraceParser.java
@@ -85,6 +85,11 @@ public class SmartStackTraceParser
List<StackTraceElement> stackTraceElements = focusOnClass( stackTrace, testClass );
Collections.reverse( stackTraceElements );
StackTraceElement stackTraceElement;
+ if (stackTrace.length == 0)
+ {
+ result.append( simpleName );
+ result.append("XX");
+ }
for ( int i = 0; i < stackTraceElements.size(); i++ )
{
stackTraceElement = stackTraceElements.get( i );
@@ -175,7 +180,7 @@ public class SmartStackTraceParser
private boolean rootIsInclass()
{
- return stackTrace[0].getClassName().equals( testClassName );
+ return stackTrace.length > 0 && stackTrace[0].getClassName().equals( testClassName );
}
static List<StackTraceElement> focusOnClass( StackTraceElement[] stackTrace, Class clazz )
@@ -183,7 +188,7 @@ public class SmartStackTraceParser
List<StackTraceElement> result = new ArrayList<StackTraceElement>();
for ( StackTraceElement element : stackTrace )
{
- if ( isInSupers( clazz, element.getClassName() ) )
+ if ( element != null && isInSupers( clazz, element.getClassName() ) )
{
result.add( element );
}
http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/c513cbc5/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/SmartStackTraceParserTest.java
----------------------------------------------------------------------
diff --git a/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/SmartStackTraceParserTest.java b/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/SmartStackTraceParserTest.java
index c97e5b8..8880ed0 100644
--- a/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/SmartStackTraceParserTest.java
+++ b/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/SmartStackTraceParserTest.java
@@ -19,6 +19,7 @@ package org.apache.maven.surefire.report;
* under the License.
*/
+import java.lang.reflect.Field;
import java.util.List;
import junit.framework.Assert;
@@ -228,4 +229,25 @@ public class SmartStackTraceParserTest
new SmartStackTraceParser( "Not a class name", new Throwable( "my message" ) );
assertEquals( "my message", smartStackTraceParser.getString() );
}
+
+ public void testNullElementInStackTrace()
+ throws Exception
+ {
+ ATestClass aTestClass = new ATestClass();
+ try
+ {
+ aTestClass.failInAssert();
+ }
+ catch ( AssertionError e )
+ {
+ SmartStackTraceParser smartStackTraceParser = new SmartStackTraceParser( ATestClass.class, e );
+ Field stackTrace = SmartStackTraceParser.class.getDeclaredField("stackTrace");
+ stackTrace.setAccessible(true);
+ stackTrace.set(smartStackTraceParser, new StackTraceElement[0]);
+ String res = smartStackTraceParser.getString();
+ assertEquals( "ATestClass X is not Z", res );
+ }
+
+ }
+
}