diff --git a/src/java/org/codehaus/groovy/grails/test/report/junit/PlainFormatter.java b/src/java/org/codehaus/groovy/grails/test/report/junit/PlainFormatter.java index 93ee7dcd53a..f118fe6e763 100644 --- a/src/java/org/codehaus/groovy/grails/test/report/junit/PlainFormatter.java +++ b/src/java/org/codehaus/groovy/grails/test/report/junit/PlainFormatter.java @@ -1,10 +1,10 @@ package org.codehaus.groovy.grails.test.report.junit; import java.io.*; -import grails.util.GrailsUtil; import junit.framework.*; import org.apache.tools.ant.taskdefs.optional.junit.PlainJUnitResultFormatter; import org.apache.tools.ant.taskdefs.optional.junit.JUnitTest; +import org.codehaus.groovy.grails.test.support.TestStacktraceSanitizer; /** * JUnit plain text formatter that sanitises the stack traces generated @@ -44,12 +44,12 @@ public void setSystemOutput(String out) { } public void addFailure(Test test, Throwable throwable) { - GrailsUtil.deepSanitize(throwable); + TestStacktraceSanitizer.sanitize(throwable); super.addFailure(test, throwable); } public void addError(Test test, Throwable throwable) { - GrailsUtil.deepSanitize(throwable); + TestStacktraceSanitizer.sanitize(throwable); super.addError(test, throwable); } diff --git a/src/java/org/codehaus/groovy/grails/test/report/junit/XMLFormatter.java b/src/java/org/codehaus/groovy/grails/test/report/junit/XMLFormatter.java index 00ea92d8853..7bdf441b5cf 100644 --- a/src/java/org/codehaus/groovy/grails/test/report/junit/XMLFormatter.java +++ b/src/java/org/codehaus/groovy/grails/test/report/junit/XMLFormatter.java @@ -2,8 +2,8 @@ import java.io.*; import junit.framework.Test; -import grails.util.GrailsUtil; import org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter; +import org.codehaus.groovy.grails.test.support.TestStacktraceSanitizer; /** * JUnit XML formatter that sanitises the stack traces generated by @@ -25,12 +25,12 @@ public void setOutput(OutputStream out) { } public void addFailure(Test test, Throwable throwable) { - GrailsUtil.deepSanitize(throwable); + TestStacktraceSanitizer.sanitize(throwable); super.addFailure(test, (Throwable)throwable); } public void addError(Test test, Throwable throwable) { - GrailsUtil.deepSanitize(throwable); + TestStacktraceSanitizer.sanitize(throwable); super.addError(test, throwable); } } diff --git a/src/java/org/codehaus/groovy/grails/test/support/TestStacktraceSanitizer.java b/src/java/org/codehaus/groovy/grails/test/support/TestStacktraceSanitizer.java new file mode 100644 index 00000000000..15d1a1a33ed --- /dev/null +++ b/src/java/org/codehaus/groovy/grails/test/support/TestStacktraceSanitizer.java @@ -0,0 +1,46 @@ +/* + * Copyright 2009 the original author or authors. + * + * 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.codehaus.groovy.grails.test.support; + +import grails.util.GrailsUtil; +import java.util.List; +import java.util.ArrayList; + +public class TestStacktraceSanitizer { + + private static final String TEST_RUNNING_CLASS = "_GrailsTest"; + + public static Throwable sanitize(Throwable t) { + GrailsUtil.deepSanitize(t); + StackTraceElement[] trace = t.getStackTrace(); + List newTrace = new ArrayList(); + for (int i = 0; i < trace.length; i++) { + StackTraceElement stackTraceElement = trace[i]; + if (stackTraceElement.getClassName().startsWith(TEST_RUNNING_CLASS)) { + break; + } else { + newTrace.add(stackTraceElement); + } + } + + StackTraceElement[] clean = new StackTraceElement[newTrace.size()]; + newTrace.toArray(clean); + t.setStackTrace(clean); + return t; + } + +} \ No newline at end of file