Fix test status
This also adds a few util methods for DEX VM version access.
Change-Id: I859a321c967ce122de9813857301d1cdc4cc05f4
diff --git a/src/test/java/com/android/tools/r8/TestParameters.java b/src/test/java/com/android/tools/r8/TestParameters.java
index 7e230ef..20256e1 100644
--- a/src/test/java/com/android/tools/r8/TestParameters.java
+++ b/src/test/java/com/android/tools/r8/TestParameters.java
@@ -7,7 +7,9 @@
import static org.junit.Assert.assertTrue;
import com.android.tools.r8.TestBase.Backend;
+import com.android.tools.r8.TestRuntime.CfRuntime;
import com.android.tools.r8.TestRuntime.CfVm;
+import com.android.tools.r8.TestRuntime.DexRuntime;
import com.android.tools.r8.TestRuntime.NoneRuntime;
import com.android.tools.r8.ToolHelper.DexVm;
import com.android.tools.r8.utils.AndroidApiLevel;
@@ -55,6 +57,10 @@
return runtime.isDex();
}
+ public DexRuntime asDexRuntime() {
+ return getRuntime().asDex();
+ }
+
public boolean isCfRuntime() {
return runtime.isCf();
}
@@ -63,6 +69,10 @@
return runtime.isCf() && runtime.asCf().getVm() == vm;
}
+ public CfRuntime asCfRuntime() {
+ return getRuntime().asCf();
+ }
+
public boolean isDexRuntimeVersion(DexVm.Version vm) {
return isDexRuntime() && vm == getDexRuntimeVersion();
}
diff --git a/src/test/java/com/android/tools/r8/TestRuntime.java b/src/test/java/com/android/tools/r8/TestRuntime.java
index 6fd2f96..05f9e16 100644
--- a/src/test/java/com/android/tools/r8/TestRuntime.java
+++ b/src/test/java/com/android/tools/r8/TestRuntime.java
@@ -248,6 +248,10 @@
return vm;
}
+ public DexVm.Version getVersion() {
+ return vm.getVersion();
+ }
+
@Override
public AndroidApiLevel maxSupportedApiLevel() {
return getMinApiLevel();
diff --git a/src/test/java/com/android/tools/r8/resolution/InvokeDefaultMethodViaStaticTest.java b/src/test/java/com/android/tools/r8/resolution/InvokeDefaultMethodViaStaticTest.java
index 37f328e..c621b4b 100644
--- a/src/test/java/com/android/tools/r8/resolution/InvokeDefaultMethodViaStaticTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/InvokeDefaultMethodViaStaticTest.java
@@ -6,6 +6,7 @@
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.ToolHelper.DexVm.Version;
import com.android.tools.r8.resolution.invokestaticinterfacedefault.InterfaceDump;
import com.android.tools.r8.resolution.invokestaticinterfacedefault.MainDump;
import com.google.common.collect.ImmutableList;
@@ -32,12 +33,19 @@
this.parameters = parameters;
}
+ private Class<? extends Throwable> getExpectedError() {
+ return parameters.isDexRuntime()
+ && parameters.asDexRuntime().getVersion().isOlderThanOrEqual(Version.V4_4_4)
+ ? VerifyError.class
+ : IncompatibleClassChangeError.class;
+ }
+
@Test
public void testReference() throws Exception {
testForRuntime(parameters)
.addProgramClassFileData(CLASSES)
.run(parameters.getRuntime(), "Main")
- .assertFailureWithErrorThatThrows(IncompatibleClassChangeError.class);
+ .assertFailureWithErrorThatThrows(getExpectedError());
}
@Test
@@ -48,6 +56,6 @@
.setMinApi(parameters.getApiLevel())
.addOptionsModification(o -> o.testing.allowInvokeErrors = true)
.run(parameters.getRuntime(), "Main")
- .assertFailureWithErrorThatThrows(IncompatibleClassChangeError.class);
+ .assertFailureWithErrorThatThrows(getExpectedError());
}
}