Fix PublicMethodsTest
Added parametrization and check for min API level for when constructors
can be removed.
Bug: b/173751869
Change-Id: I8e9060ed585bcd5ce84d13f84d7ff3b12a22fa08
diff --git a/src/test/java/com/android/tools/r8/shaking/methods/MethodsTestBase.java b/src/test/java/com/android/tools/r8/shaking/methods/MethodsTestBase.java
index fe6a0aa..1cff714 100644
--- a/src/test/java/com/android/tools/r8/shaking/methods/MethodsTestBase.java
+++ b/src/test/java/com/android/tools/r8/shaking/methods/MethodsTestBase.java
@@ -6,6 +6,8 @@
import com.android.tools.r8.NoVerticalClassMerging;
import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.google.common.collect.ImmutableList;
@@ -13,9 +15,22 @@
import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.Function;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
+@RunWith(Parameterized.class)
public abstract class MethodsTestBase extends TestBase {
+ @Parameter(0)
+ public static TestParameters parameters;
+
+ @Parameters(name = "{0}")
+ public static TestParametersCollection data() {
+ return getTestParameters().withDexRuntimesAndAllApiLevels().build();
+ }
+
public enum Shrinker {
Proguard,
R8Full,
@@ -37,7 +52,8 @@
public void testOnR8(
List<String> keepRules, BiConsumer<CodeInspector, Shrinker> inspector, String expected)
throws Throwable {
- testForR8(Backend.DEX)
+ testForR8(parameters.getBackend())
+ .setMinApi(parameters.getApiLevel())
.enableNoVerticalClassMergingAnnotations()
.addProgramClasses(getClasses())
.addKeepRules(keepRules)
@@ -50,7 +66,7 @@
public void testOnR8Compat(
List<String> keepRules, BiConsumer<CodeInspector, Shrinker> inspector, String expected)
throws Throwable {
- testForR8Compat(Backend.DEX)
+ testForR8Compat(parameters.getBackend())
.enableNoVerticalClassMergingAnnotations()
.addProgramClasses(getClasses())
.addKeepRules(keepRules)
diff --git a/src/test/java/com/android/tools/r8/shaking/methods/pblc/PublicMethodsTest.java b/src/test/java/com/android/tools/r8/shaking/methods/pblc/PublicMethodsTest.java
index 67e25b2..477a310 100644
--- a/src/test/java/com/android/tools/r8/shaking/methods/pblc/PublicMethodsTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/methods/pblc/PublicMethodsTest.java
@@ -10,6 +10,7 @@
import com.android.tools.r8.NoVerticalClassMerging;
import com.android.tools.r8.shaking.methods.MethodsTestBase;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.codeinspector.ClassSubject;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.google.common.collect.ImmutableList;
@@ -65,6 +66,11 @@
return Main.class;
}
+ private boolean willShrinkConstructors(Shrinker shrinker) {
+ return shrinker.isR8Full()
+ && parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.L);
+ }
+
private static BiConsumer<CodeInspector, Shrinker> applyInspectorIf(
Predicate<Shrinker> predicate,
BiConsumer<CodeInspector, Shrinker> thenInspector,
@@ -175,7 +181,7 @@
runTest(
"-keep class **.SubSub { *; }",
applyInspectorIf(
- Shrinker::isR8Full,
+ this::willShrinkConstructors,
this::checkAllMethodsAndSubSubConstructor,
this::checkAllMethodsAndAllConstructors),
allMethodsOutput());
@@ -186,7 +192,7 @@
runTest(
"-keep class **.SubSub { <methods>; }",
applyInspectorIf(
- Shrinker::isR8Full,
+ this::willShrinkConstructors,
this::checkAllMethodsAndSubSubConstructor,
this::checkAllMethodsAndAllConstructors),
allMethodsOutput());
@@ -205,7 +211,7 @@
runTest(
"-keep class **.SubSub { <init>(); void m*(); }",
applyInspectorIf(
- Shrinker::isR8Full,
+ this::willShrinkConstructors,
this::checkAllMethodsAndSubSubConstructor,
this::checkAllMethodsAndAllConstructors),
allMethodsOutput());
@@ -221,7 +227,9 @@
runTest(
"-keep class **.SubSub { <init>(); void m1(); }",
applyInspectorIf(
- Shrinker::isR8Full, this::checkM1AndSubSubConstructor, this::checkM1AndAllConstructors),
+ this::willShrinkConstructors,
+ this::checkM1AndSubSubConstructor,
+ this::checkM1AndAllConstructors),
onlyM1Output());
}
@@ -235,7 +243,9 @@
runTest(
"-keep class **.SubSub { <init>(); void m2(); }",
applyInspectorIf(
- Shrinker::isR8Full, this::checkM2AndSubSubConstructor, this::checkM2AndAllConstructors),
+ this::willShrinkConstructors,
+ this::checkM2AndSubSubConstructor,
+ this::checkM2AndAllConstructors),
onlyM2Output());
}
@@ -249,7 +259,9 @@
runTest(
"-keep class **.SubSub { <init>(); void m3(); }",
applyInspectorIf(
- Shrinker::isR8Full, this::checkM3AndSubSubConstructor, this::checkM3AndAllConstructors),
+ this::willShrinkConstructors,
+ this::checkM3AndSubSubConstructor,
+ this::checkM3AndAllConstructors),
onlyM3Output());
}