Fix expected error message and signature for older VMs.
Test:
$ tools/test.py --dex_vm=all *MemberResolutionAsmTest
Bug: 117237053
Change-Id: I979d2afe85ef0a6f5512f926e914bd0ca8f01174
diff --git a/src/test/java/com/android/tools/r8/naming/applymapping/MemberResolutionAsmTest.java b/src/test/java/com/android/tools/r8/naming/applymapping/MemberResolutionAsmTest.java
index 86b0541..102a6a3 100644
--- a/src/test/java/com/android/tools/r8/naming/applymapping/MemberResolutionAsmTest.java
+++ b/src/test/java/com/android/tools/r8/naming/applymapping/MemberResolutionAsmTest.java
@@ -14,6 +14,7 @@
import com.android.tools.r8.AsmTestBase;
import com.android.tools.r8.R8Command;
import com.android.tools.r8.ToolHelper;
+import com.android.tools.r8.ToolHelper.DexVm.Version;
import com.android.tools.r8.ToolHelper.ProcessResult;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.utils.AndroidApp;
@@ -189,12 +190,25 @@
List<byte[]> classBytes = ImmutableList.of(ADump.dump(), BDump.dump(), MainDump.dump());
ProcessResult outputBefore = runOnJavaRaw(main, classBytes, ImmutableList.of());
assertNotEquals(0, outputBefore.exitCode);
- assertThat(outputBefore.stderr, containsString("IllegalAccessError"));
- assertThat(outputBefore.stderr, containsString("A.x()"));
+ String expectedErrorMessage = "IllegalAccessError";
+ String expectedErrorSignature = "A.x()V";
+ assertThat(outputBefore.stderr, containsString(expectedErrorMessage));
+ assertThat(outputBefore.stderr, containsString(expectedErrorSignature));
ProcessResult outputAfter = runOnVMRaw(processedApp, main, backend);
assertNotEquals(0, outputAfter.exitCode);
- assertThat(outputAfter.stderr, containsString("IllegalAccessError"));
- assertThat(outputAfter.stderr, containsString("X.y()"));
+ expectedErrorSignature = "X.y()V";
+ if (backend == Backend.DEX) {
+ expectedErrorSignature = "void X.y()";
+ if (ToolHelper.getDexVm().getVersion().isOlderThanOrEqual(Version.V6_0_1)) {
+ expectedErrorMessage ="IncompatibleClassChangeError";
+ }
+ if (ToolHelper.getDexVm().getVersion().isOlderThanOrEqual(Version.V4_4_4)) {
+ expectedErrorMessage ="illegal method access";
+ expectedErrorSignature = "LX;.y ()V";
+ }
+ }
+ assertThat(outputAfter.stderr, containsString(expectedErrorMessage));
+ assertThat(outputAfter.stderr, containsString(expectedErrorSignature));
CodeInspector codeInspector = new CodeInspector(processedApp, mapPath);
ClassSubject base = codeInspector.clazz("A");