[Retrace] Test throwing InvalidMappingFileException on invalid ranges
Bug: b/272032896
Change-Id: I6bb81c2a0e8f32eab7309ba3439929aa1379b159
diff --git a/src/test/java/com/android/tools/r8/retrace/RetraceTests.java b/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
index c8ce59b..2a11144 100644
--- a/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
@@ -7,6 +7,7 @@
import static junit.framework.TestCase.assertEquals;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.junit.Assume.assumeFalse;
@@ -46,6 +47,8 @@
import com.android.tools.r8.retrace.stacktraces.InlineSourceFileContextStackTrace;
import com.android.tools.r8.retrace.stacktraces.InlineSourceFileStackTrace;
import com.android.tools.r8.retrace.stacktraces.InlineWithLineNumbersStackTrace;
+import com.android.tools.r8.retrace.stacktraces.InvalidMinifiedRangeStackTrace;
+import com.android.tools.r8.retrace.stacktraces.InvalidOriginalRangeStackTrace;
import com.android.tools.r8.retrace.stacktraces.InvalidStackTrace;
import com.android.tools.r8.retrace.stacktraces.MapVersionWarningStackTrace;
import com.android.tools.r8.retrace.stacktraces.MemberFieldOverlapStackTrace;
@@ -457,6 +460,20 @@
runRetraceTest(new TrailingWhitespaceStackTrace());
}
+ @Test
+ public void testInvalidMinifiedRangeStackTrace() {
+ assumeFalse(external);
+ // TODO(b/272032896): Should be InvalidMappingFileException
+ assertThrows(AssertionError.class, () -> runRetraceTest(new InvalidMinifiedRangeStackTrace()));
+ }
+
+ @Test
+ public void testInvalidOriginalRangeStackTrace() {
+ assumeFalse(external);
+ // TODO(b/272032896): Should be InvalidMappingFileException
+ assertThrows(AssertionError.class, () -> runRetraceTest(new InvalidOriginalRangeStackTrace()));
+ }
+
private void inspectRetraceTest(
StackTraceForTest stackTraceForTest, Consumer<Retracer> inspection) {
inspection.accept(
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/InvalidMinifiedRangeStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/InvalidMinifiedRangeStackTrace.java
new file mode 100644
index 0000000..ad16a40
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/InvalidMinifiedRangeStackTrace.java
@@ -0,0 +1,42 @@
+// Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.retrace.stacktraces;
+
+import com.android.tools.r8.utils.StringUtils;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+public class InvalidMinifiedRangeStackTrace implements StackTraceForTest {
+
+ @Override
+ public List<String> obfuscatedStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.main(Main.dummy:3)");
+ }
+
+ @Override
+ public List<String> retracedStackTrace() {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public List<String> retraceVerboseStackTrace() {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public String mapping() {
+ return StringUtils.lines(
+ "com.android.tools.r8.naming.retrace.Main -> com.android.tools.r8.naming.retrace.Main:",
+ " 5:3:void main(java.lang.String[]) -> main");
+ }
+
+ @Override
+ public int expectedWarnings() {
+ return 0;
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/InvalidOriginalRangeStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/InvalidOriginalRangeStackTrace.java
new file mode 100644
index 0000000..3b8fa63
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/InvalidOriginalRangeStackTrace.java
@@ -0,0 +1,42 @@
+// Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.retrace.stacktraces;
+
+import com.android.tools.r8.utils.StringUtils;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+public class InvalidOriginalRangeStackTrace implements StackTraceForTest {
+
+ @Override
+ public List<String> obfuscatedStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.main(Main.dummy:3)");
+ }
+
+ @Override
+ public List<String> retracedStackTrace() {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public List<String> retraceVerboseStackTrace() {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public String mapping() {
+ return StringUtils.lines(
+ "com.android.tools.r8.naming.retrace.Main -> com.android.tools.r8.naming.retrace.Main:",
+ " 2:5:void main(java.lang.String[]):5:2 -> main");
+ }
+
+ @Override
+ public int expectedWarnings() {
+ return 0;
+ }
+}