[KeepAnno] Update "same method" test
This test shows issues in conditionals with backrefs.
Bug: b/322114141
Change-Id: I17fde23ec51c49b8248bbd85b2669ea3b08c015a
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepSameMethodTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepSameMethodTest.java
index 59f6d6f..aebeeb2 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepSameMethodTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepSameMethodTest.java
@@ -7,9 +7,6 @@
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
import static org.hamcrest.MatcherAssert.assertThat;
-import com.android.tools.r8.TestBase;
-import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.keepanno.annotations.KeepBinding;
import com.android.tools.r8.keepanno.annotations.KeepCondition;
import com.android.tools.r8.keepanno.annotations.KeepEdge;
@@ -23,43 +20,35 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
@RunWith(Parameterized.class)
-public class KeepSameMethodTest extends TestBase {
+public class KeepSameMethodTest extends KeepAnnoTestBase {
static final String EXPECTED = StringUtils.lines("foo");
- private final TestParameters parameters;
+ // TODO(b/265893433): The use of backreferences does not work in PG.
+ static final String UNEXPECTED_PG = StringUtils.lines("main");
+
+ @Parameter public KeepAnnoParameters parameters;
@Parameterized.Parameters(name = "{0}")
- public static TestParametersCollection data() {
- return getTestParameters().withDefaultRuntimes().withApiLevel(AndroidApiLevel.B).build();
- }
-
- public KeepSameMethodTest(TestParameters parameters) {
- this.parameters = parameters;
+ public static List<KeepAnnoParameters> data() {
+ return createParameters(
+ getTestParameters().withDefaultRuntimes().withApiLevel(AndroidApiLevel.B).build());
}
@Test
- public void testReference() throws Exception {
- testForRuntime(parameters)
- .addProgramClasses(getInputClasses())
- .run(parameters.getRuntime(), TestClass.class)
- .assertSuccessWithOutput(EXPECTED);
- }
-
- @Test
- public void testWithRuleExtraction() throws Exception {
- testForR8(parameters.getBackend())
- .enableExperimentalKeepAnnotations()
+ public void test() throws Exception {
+ testForKeepAnno(parameters)
.addProgramClasses(getInputClasses())
.addKeepMainRule(TestClass.class)
- .setMinApi(parameters)
+ .setExcludedOuterClass(getClass())
// The "all members" target will create an unused "all fields" rule.
.allowUnusedProguardConfigurationRules()
- .run(parameters.getRuntime(), TestClass.class)
- .assertSuccessWithOutput(EXPECTED)
- .inspect(this::checkOutput);
+ .run(TestClass.class)
+ .assertSuccessWithOutput(parameters.isPG() ? UNEXPECTED_PG : EXPECTED)
+ .applyIf(parameters.isR8(), r -> r.inspect(this::checkOutput));
}
public List<Class<?>> getInputClasses() {