Skip to content

Commit d4e00e4

Browse files
authored
Use JDK Throwable.printStackTrace (#1583)
This prints stack traces with both cause and suppressions unlike the naive implementation from JUnitXmlReporter. Without this change, suppressions aren't printed and causes are overly long.
1 parent 670b7ee commit d4e00e4

File tree

1 file changed

+6
-11
lines changed

1 file changed

+6
-11
lines changed

scala/support/JUnitXmlReporter.scala

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ package io.bazel.rules.scala
1818
import org.scalatest._
1919
import org.scalatest.events._
2020

21-
import java.io.PrintWriter
21+
import java.io.{ PrintWriter, StringWriter }
2222
import java.net.InetAddress
2323
import java.net.UnknownHostException
2424
import java.text.SimpleDateFormat
@@ -397,16 +397,11 @@ class JUnitXmlReporter extends Reporter {
397397
// including any nested exceptions.
398398
//
399399
def getStackTrace(throwable: Throwable): String = {
400-
"" + throwable +
401-
Array.concat(throwable.getStackTrace).mkString("\n at ",
402-
"\n at ", "\n") +
403-
{
404-
if (throwable.getCause != null) {
405-
" Cause: " +
406-
getStackTrace(throwable.getCause)
407-
}
408-
else ""
409-
}
400+
val stringWriter = new StringWriter
401+
val printWriter = new PrintWriter(stringWriter)
402+
throwable.printStackTrace(printWriter)
403+
printWriter.flush()
404+
stringWriter.toString
410405
}
411406

412407
//

0 commit comments

Comments
 (0)