Address comments from https://r8-review.googlesource.com/c/r8/+/32802
Simplify test by using TestBase
Extend to test R8 as well
Bug: 120164595
Change-Id: I7170936c7c337edf2950fb77f4b52158567f0363
diff --git a/src/test/java/com/android/tools/r8/regress/b120164595/B120164595.java b/src/test/java/com/android/tools/r8/regress/b120164595/B120164595.java
index 25daf97..08e86e6 100644
--- a/src/test/java/com/android/tools/r8/regress/b120164595/B120164595.java
+++ b/src/test/java/com/android/tools/r8/regress/b120164595/B120164595.java
@@ -4,22 +4,18 @@
package com.android.tools.r8.regress.b120164595;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.matchers.JUnitMatchers.containsString;
+
import com.android.tools.r8.CompilationFailedException;
-import com.android.tools.r8.D8Command;
-import com.android.tools.r8.OutputMode;
-import com.android.tools.r8.ToolHelper;
+import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestCompileResult;
import com.android.tools.r8.ToolHelper.DexVm;
-import com.android.tools.r8.origin.Origin;
-import com.android.tools.r8.utils.AndroidApp;
+import com.android.tools.r8.ToolHelper.ProcessResult;
import com.google.common.collect.ImmutableList;
import java.io.IOException;
-import java.nio.file.Path;
-import java.util.concurrent.ExecutionException;
-import org.junit.Assume;
-import org.junit.Rule;
import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.rules.TemporaryFolder;
/**
* Regression test for art issue with multi catch-handlers.
@@ -49,30 +45,35 @@
}
}
-public class B120164595 {
- @Rule
- public ExpectedException thrown = ExpectedException.none();
+public class B120164595 extends TestBase {
+ @Test
+ public void testD8()
+ throws IOException, CompilationFailedException {
+ TestCompileResult d8Result = testForD8().addProgramClasses(TestClass.class).compile();
+ checkArt(d8Result);
+ }
@Test
- public void regress()
- throws IOException, CompilationFailedException, ExecutionException {
- AndroidApp app =
- ToolHelper.runD8(
- D8Command.builder()
- .addClassProgramData(ToolHelper.getClassAsBytes(
- TestClass.class), Origin.unknown()));
- TemporaryFolder temp = ToolHelper.getTemporaryFolderForTest();
- temp.create();
- Path outDex = temp.getRoot().toPath().resolve("dex.zip");
- app.writeToZip(outDex, OutputMode.DexIndexed);
- // TODO(120164595): Remove when workaround lands.
- thrown.expect(Throwable.class);
- ToolHelper.runArtNoVerificationErrors(
- ImmutableList.of(outDex.toString()),
+ public void testR8()
+ throws IOException, CompilationFailedException {
+ TestCompileResult r8Result = testForR8(Backend.DEX)
+ .addProgramClasses(TestClass.class)
+ .addKeepClassAndMembersRules(TestClass.class)
+ .compile();
+ checkArt(r8Result);
+ }
+
+ private void checkArt(TestCompileResult result) throws IOException {
+ ProcessResult artResult = runOnArtRaw(
+ result.app,
TestClass.class.getCanonicalName(),
builder -> {
builder.appendArtOption("-Xusejit:true");
},
- DexVm.ART_9_0_0_HOST);
+ DexVm.ART_9_0_0_HOST
+ );
+ // TODO(120164595): Remove when workaround lands.
+ assertNotEquals(artResult.exitCode, 0);
+ assertTrue(artResult.stderr.contains("Expected NullPointerException"));
}
}