Introduce a utility to filter redundant TestParameters for R8 tests
Bug: b/267266483
Change-Id: I25fcc11b10b5b7d0866a8c0f22fc2bd31fb54fb8
diff --git a/src/test/java/com/android/tools/r8/TestParameters.java b/src/test/java/com/android/tools/r8/TestParameters.java
index 2c07c38..616d3c7 100644
--- a/src/test/java/com/android/tools/r8/TestParameters.java
+++ b/src/test/java/com/android/tools/r8/TestParameters.java
@@ -5,6 +5,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
import com.android.tools.r8.TestBase.Backend;
import com.android.tools.r8.TestRuntime.CfRuntime;
@@ -20,15 +21,22 @@
private final TestRuntime runtime;
private final AndroidApiLevel apiLevel;
+ private final boolean representativeApiLevelForRuntime;
public TestParameters(TestRuntime runtime) {
this(runtime, null);
}
public TestParameters(TestRuntime runtime, AndroidApiLevel apiLevel) {
+ this(runtime, apiLevel, true);
+ }
+
+ public TestParameters(
+ TestRuntime runtime, AndroidApiLevel apiLevel, boolean representativeApiLevelForRuntime) {
assert runtime != null;
this.runtime = runtime;
this.apiLevel = apiLevel;
+ this.representativeApiLevelForRuntime = representativeApiLevelForRuntime;
}
public static TestParametersBuilder builder() {
@@ -157,6 +165,11 @@
assertEquals(NoneRuntime.getInstance(), runtime);
}
+ public void assumeR8TestParameters() {
+ assertTrue(apiLevel != null || representativeApiLevelForRuntime);
+ assumeTrue(isDexRuntime() || representativeApiLevelForRuntime);
+ }
+
public DexVm.Version getDexRuntimeVersion() {
assertTrue(isDexRuntime());
return getRuntime().asDex().getVm().getVersion();
diff --git a/src/test/java/com/android/tools/r8/TestParametersBuilder.java b/src/test/java/com/android/tools/r8/TestParametersBuilder.java
index c62a34c..bb1aad8 100644
--- a/src/test/java/com/android/tools/r8/TestParametersBuilder.java
+++ b/src/test/java/com/android/tools/r8/TestParametersBuilder.java
@@ -9,6 +9,7 @@
import com.android.tools.r8.TestRuntime.NoneRuntime;
import com.android.tools.r8.ToolHelper.DexVm;
import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.BooleanBox;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap;
@@ -312,7 +313,15 @@
set.add(explicitApiLevel);
}
}
- return set.stream().map(api -> new TestParameters(runtime, api));
+ BooleanBox representativeApiLevelForRuntime = new BooleanBox(true);
+ return set.stream()
+ .map(
+ api -> {
+ TestParameters parameters =
+ new TestParameters(runtime, api, representativeApiLevelForRuntime.get());
+ representativeApiLevelForRuntime.unset();
+ return parameters;
+ });
}
}
}
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/BasicConstantDynamicTest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/BasicConstantDynamicTest.java
index c5c6480..e5a75ed 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/BasicConstantDynamicTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/BasicConstantDynamicTest.java
@@ -73,7 +73,7 @@
@Test
public void testR8() throws Exception {
- assumeTrue(parameters.isDexRuntime() || parameters.getApiLevel().isEqualTo(AndroidApiLevel.B));
+ parameters.assumeR8TestParameters();
testForR8(parameters.getBackend())
.addProgramClassFileData(getTransformedClasses())
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/BootstrapMethodNotFoundConstantDynamicTest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/BootstrapMethodNotFoundConstantDynamicTest.java
index 4cea83c..3abcc88 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/BootstrapMethodNotFoundConstantDynamicTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/BootstrapMethodNotFoundConstantDynamicTest.java
@@ -71,7 +71,7 @@
@Test
public void testR8() throws Exception {
- assumeTrue(parameters.isDexRuntime() || parameters.getApiLevel().isEqualTo(AndroidApiLevel.B));
+ parameters.assumeR8TestParameters();
testForR8(parameters.getBackend())
.addProgramClassFileData(getTransformedClasses())
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/BootstrapMethodPrivateConstantDynamicTest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/BootstrapMethodPrivateConstantDynamicTest.java
index 169a85d..a8fc8ce 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/BootstrapMethodPrivateConstantDynamicTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/BootstrapMethodPrivateConstantDynamicTest.java
@@ -70,7 +70,7 @@
@Test
public void testR8() throws Exception {
- assumeTrue(parameters.isDexRuntime() || parameters.getApiLevel().isEqualTo(AndroidApiLevel.B));
+ parameters.assumeR8TestParameters();
testForR8(parameters.getBackend())
.addProgramClassFileData(getTransformedClasses())
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/BootstrapMethodVirtualConstantDynamicTest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/BootstrapMethodVirtualConstantDynamicTest.java
index a693c21..d024c12 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/BootstrapMethodVirtualConstantDynamicTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/BootstrapMethodVirtualConstantDynamicTest.java
@@ -70,7 +70,7 @@
@Test
public void testR8() throws Exception {
- assumeTrue(parameters.isDexRuntime() || parameters.getApiLevel().isEqualTo(AndroidApiLevel.B));
+ parameters.assumeR8TestParameters();
testForR8(parameters.getBackend())
.addProgramClassFileData(getTransformedClasses())
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicInDefaultInterfaceMethodICCETest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicInDefaultInterfaceMethodICCETest.java
index feff719..b9bbf85 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicInDefaultInterfaceMethodICCETest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicInDefaultInterfaceMethodICCETest.java
@@ -73,7 +73,7 @@
@Test
public void testR8() throws Exception {
- assumeTrue(parameters.isDexRuntime() || parameters.getApiLevel().isEqualTo(AndroidApiLevel.B));
+ parameters.assumeR8TestParameters();
testForR8(parameters.getBackend())
.addProgramClasses(MAIN_CLASS)
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicInDefaultInterfaceMethodTest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicInDefaultInterfaceMethodTest.java
index ad46d90..d4a92e0 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicInDefaultInterfaceMethodTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicInDefaultInterfaceMethodTest.java
@@ -74,7 +74,7 @@
@Test
public void testR8() throws Exception {
- assumeTrue(parameters.isDexRuntime() || parameters.getApiLevel().isEqualTo(AndroidApiLevel.B));
+ parameters.assumeR8TestParameters();
testForR8(parameters.getBackend())
.addProgramClasses(MAIN_CLASS)
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/HierarchyConstantDynamicTest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/HierarchyConstantDynamicTest.java
index b7e540b..695ddd5 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/HierarchyConstantDynamicTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/HierarchyConstantDynamicTest.java
@@ -65,7 +65,7 @@
@Test
public void testR8() throws Exception {
- assumeTrue(parameters.isDexRuntime() || parameters.getApiLevel().isEqualTo(AndroidApiLevel.B));
+ parameters.assumeR8TestParameters();
testForR8(parameters.getBackend())
.addProgramClassFileData(getTransformedClasses())
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/MultipleBootstrapMethodConstantDynamicTest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/MultipleBootstrapMethodConstantDynamicTest.java
index a7df375..b052264 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/MultipleBootstrapMethodConstantDynamicTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/MultipleBootstrapMethodConstantDynamicTest.java
@@ -74,7 +74,7 @@
@Test
public void testR8() throws Exception {
- assumeTrue(parameters.isDexRuntime() || parameters.getApiLevel().isEqualTo(AndroidApiLevel.B));
+ parameters.assumeR8TestParameters();
testForR8(parameters.getBackend())
.addProgramClassFileData(getTransformedClasses())