Merge "Add debugging output to retrace test"
diff --git a/src/test/java/com/android/tools/r8/naming/retrace/DesugarLambdaRetraceTest.java b/src/test/java/com/android/tools/r8/naming/retrace/DesugarLambdaRetraceTest.java
index 1868940..378d3c1 100644
--- a/src/test/java/com/android/tools/r8/naming/retrace/DesugarLambdaRetraceTest.java
+++ b/src/test/java/com/android/tools/r8/naming/retrace/DesugarLambdaRetraceTest.java
@@ -54,8 +54,31 @@
(StackTrace actualStackTrace, StackTrace retracedStackTrace) -> {
// Even when SourceFile is present retrace replaces the file name in the stack trace.
if (backend == Backend.CF) {
+ // TODO(122440196): Additional code to locate issue.
+ if (isSameExceptForFileName(expectedStackTrace).matches(retracedStackTrace)) {
+ System.out.println("Expected original:");
+ System.out.println(expectedStackTrace.getOriginalStderr());
+ System.out.println("Actual original:");
+ System.out.println(retracedStackTrace.getOriginalStderr());
+ System.out.println("Parsed original:");
+ System.out.println(expectedStackTrace);
+ System.out.println("Parsed retraced:");
+ System.out.println(retracedStackTrace);
+ }
assertThat(retracedStackTrace, isSameExceptForFileName(expectedStackTrace));
} else {
+ // TODO(122440196): Additional code to locate issue.
+ if (isSameExceptForFileName(expectedStackTrace)
+ .matches(retracedStackTrace.filter(line -> !isSynthesizedLambdaFrame(line)))) {
+ System.out.println("Expected original:");
+ System.out.println(expectedStackTrace.getOriginalStderr());
+ System.out.println("Actual original:");
+ System.out.println(retracedStackTrace.getOriginalStderr());
+ System.out.println("Parsed original:");
+ System.out.println(expectedStackTrace);
+ System.out.println("Parsed retraced:");
+ System.out.println(retracedStackTrace);
+ }
// With the frame from the lambda class filtered out the stack trace is teh same.
assertThat(
retracedStackTrace.filter(line -> !isSynthesizedLambdaFrame(line)),
diff --git a/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java b/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java
index 796750b..0ecd3e4 100644
--- a/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java
+++ b/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java
@@ -113,10 +113,12 @@
}
private final List<StackTraceLine> stackTraceLines;
+ private final String originalStderr;
- private StackTrace(List<StackTraceLine> stackTraceLines) {
+ private StackTrace(List<StackTraceLine> stackTraceLines, String originalStderr) {
assert stackTraceLines.size() > 0;
this.stackTraceLines = stackTraceLines;
+ this.originalStderr = originalStderr;
}
public int size() {
@@ -127,6 +129,10 @@
return stackTraceLines.get(index);
}
+ public String getOriginalStderr() {
+ return originalStderr;
+ }
+
public static StackTrace extractFromArt(String stderr) {
List<StackTraceLine> stackTraceLines = new ArrayList<>();
List<String> stderrLines = StringUtils.splitLines(stderr);
@@ -165,15 +171,18 @@
for (int i = first; i < last; i++) {
stackTraceLines.add(StackTraceLine.parse(stderrLines.get(i)));
}
- return new StackTrace(stackTraceLines);
+ return new StackTrace(stackTraceLines, stderr);
+ }
+
+ private static List<StackTraceLine> internalExtractFromJvm(String stderr) {
+ return StringUtils.splitLines(stderr).stream()
+ .filter(s -> s.startsWith(TAB_AT_PREFIX))
+ .map(StackTraceLine::parse)
+ .collect(Collectors.toList());
}
public static StackTrace extractFromJvm(String stderr) {
- return new StackTrace(
- StringUtils.splitLines(stderr).stream()
- .filter(s -> s.startsWith(TAB_AT_PREFIX))
- .map(StackTraceLine::parse)
- .collect(Collectors.toList()));
+ return new StackTrace(internalExtractFromJvm(stderr), stderr);
}
public static StackTrace extractFromJvm(TestRunResult result) {
@@ -188,11 +197,15 @@
FileUtils.writeTextFile(
stackTraceFile,
stackTraceLines.stream().map(line -> line.originalLine).collect(Collectors.toList()));
- return StackTrace.extractFromJvm(ToolHelper.runRetrace(mapFile, stackTraceFile));
+ // Keep the original stderr in the retraced stacktrace.
+ return new StackTrace(
+ internalExtractFromJvm(ToolHelper.runRetrace(mapFile, stackTraceFile)), originalStderr);
}
public StackTrace filter(Predicate<StackTraceLine> filter) {
- return new StackTrace(stackTraceLines.stream().filter(filter).collect(Collectors.toList()));
+ return new StackTrace(
+ stackTraceLines.stream().filter(filter).collect(Collectors.toList()),
+ originalStderr);
}
@Override