Print retraced stack-trace on test-error
Change-Id: Idfbf5d0a1d40039319b5217daf9fca29fef9e5c1
diff --git a/build.gradle b/build.gradle
index d2df8f8..8ff95c8 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1421,6 +1421,30 @@
outputs.dir r8LibTestPath
}
+def printStackTrace(TestResult result) {
+ if (project.hasProperty('r8lib') || project.hasProperty('r8lib_no_deps')) {
+ def out = new StringBuffer()
+ def err = new StringBuffer()
+ def command = "tools/retrace.py"
+ out.append("\n--------------------------------------\n")
+ out.append("RETRACED STACKTRACE\n")
+ out.append("--------------------------------------\n")
+ Process process = command.execute()
+ def processIn = new PrintStream(process.getOut())
+ process.consumeProcessOutput(out, err)
+ result.exception.printStackTrace(processIn)
+ processIn.flush()
+ processIn.close()
+ process.waitFor()
+ out.append("\n\n--------------------------------------\n")
+ out.append("OBFUSCATED STACKTRACE\n")
+ out.append("--------------------------------------\n")
+ result.exceptions.add(0, new Exception(out.toString()))
+ } else {
+ result.exception.printStackTrace()
+ }
+}
+
test {
if (project.hasProperty('generate_golden_files_to')) {
systemProperty 'generate_golden_files_to', project.property('generate_golden_files_to')
@@ -1459,7 +1483,7 @@
}
afterTest { desc, result ->
if (result.resultType == TestResult.ResultType.FAILURE) {
- result.exception.printStackTrace()
+ printStackTrace(result)
}
if (project.hasProperty('update_test_timestamp')) {
file(project.getProperty('update_test_timestamp')).text = new Date().getTime()
@@ -1469,7 +1493,7 @@
} else {
afterTest { desc, result ->
if (result.resultType == TestResult.ResultType.FAILURE) {
- result.exception.printStackTrace()
+ printStackTrace(result)
}
}
}