[Retrace] Add test for not infered source file using proxy
Change-Id: Ia8608a42eb8eb301ca49fd2c7424235699e9f3db
diff --git a/src/test/java/com/android/tools/r8/retrace/api/RetraceApiProxyFrameWithSourceFileTest.java b/src/test/java/com/android/tools/r8/retrace/api/RetraceApiProxyFrameWithSourceFileTest.java
new file mode 100644
index 0000000..7744c14
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/retrace/api/RetraceApiProxyFrameWithSourceFileTest.java
@@ -0,0 +1,141 @@
+// 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.api;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.references.ClassReference;
+import com.android.tools.r8.references.Reference;
+import com.android.tools.r8.retrace.ProguardMapProducer;
+import com.android.tools.r8.retrace.ProguardMappingSupplier;
+import com.android.tools.r8.retrace.Retrace;
+import com.android.tools.r8.retrace.RetraceStackFrameResult;
+import com.android.tools.r8.retrace.RetraceStackTraceContext;
+import com.android.tools.r8.retrace.RetraceStackTraceElementProxy;
+import com.android.tools.r8.retrace.StackTraceElementProxy;
+import java.util.Collections;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+@RunWith(Parameterized.class)
+public class RetraceApiProxyFrameWithSourceFileTest extends RetraceApiTestBase {
+
+ public RetraceApiProxyFrameWithSourceFileTest(TestParameters parameters) {
+ super(parameters);
+ }
+
+ @Override
+ protected Class<? extends RetraceApiBinaryTest> binaryTestClass() {
+ return ApiTest.class;
+ }
+
+ public static class ApiTest implements RetraceApiBinaryTest {
+
+ @Test
+ public void test() {
+ RetraceStackFrameResult<String> stringRetraceStackFrameResult =
+ Retrace.<String, TestProxy>builder()
+ .setMappingSupplier(
+ ProguardMappingSupplier.builder()
+ .setProguardMapProducer(ProguardMapProducer.fromString(""))
+ .build())
+ .build()
+ .retraceStackTraceParsed(
+ Collections.singletonList(new TestProxy()), RetraceStackTraceContext.empty())
+ .getResult()
+ .get(0)
+ .get(0);
+ assertEquals("com.android.tools.R8.a(Unknown Source)", stringRetraceStackFrameResult.get(0));
+ }
+
+ public static class TestProxy extends StackTraceElementProxy<String, TestProxy> {
+
+ @Override
+ public boolean hasClassName() {
+ return true;
+ }
+
+ @Override
+ public boolean hasMethodName() {
+ return true;
+ }
+
+ @Override
+ public boolean hasSourceFile() {
+ return true;
+ }
+
+ @Override
+ public boolean hasLineNumber() {
+ return true;
+ }
+
+ @Override
+ public boolean hasFieldName() {
+ return false;
+ }
+
+ @Override
+ public boolean hasFieldOrReturnType() {
+ return false;
+ }
+
+ @Override
+ public boolean hasMethodArguments() {
+ return false;
+ }
+
+ @Override
+ public ClassReference getClassReference() {
+ return Reference.classFromTypeName("com.android.tools.R8");
+ }
+
+ @Override
+ public String getMethodName() {
+ return "a";
+ }
+
+ @Override
+ public String getSourceFile() {
+ return "Unknown Source";
+ }
+
+ @Override
+ public int getLineNumber() {
+ return 1;
+ }
+
+ @Override
+ public String getFieldName() {
+ return null;
+ }
+
+ @Override
+ public String getFieldOrReturnType() {
+ return null;
+ }
+
+ @Override
+ public String getMethodArguments() {
+ return null;
+ }
+
+ @Override
+ public String toRetracedItem(
+ RetraceStackTraceElementProxy<String, TestProxy> retracedProxy, boolean verbose) {
+ assertFalse(retracedProxy.hasRetracedMethod());
+ return retracedProxy.getRetracedClass().getTypeName()
+ + "."
+ + getMethodName()
+ + "("
+ + retracedProxy.getSourceFile()
+ + ")";
+ }
+ }
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/retrace/api/RetraceApiTestCollection.java b/src/test/java/com/android/tools/r8/retrace/api/RetraceApiTestCollection.java
index a16e5d3..b9bf576 100644
--- a/src/test/java/com/android/tools/r8/retrace/api/RetraceApiTestCollection.java
+++ b/src/test/java/com/android/tools/r8/retrace/api/RetraceApiTestCollection.java
@@ -47,7 +47,8 @@
public static List<Class<? extends RetraceApiBinaryTest>> CLASSES_PENDING_BINARY_COMPATIBILITY =
ImmutableList.of(
RetraceApiResidualSignatureTest.ApiTest.class,
- RetracePartitionEmptyMappingTest.ApiTest.class);
+ RetracePartitionEmptyMappingTest.ApiTest.class,
+ RetraceApiProxyFrameWithSourceFileTest.ApiTest.class);
private final TemporaryFolder temp;