Cleanup BootstrapCurrentEqualityTest

Change-Id: Ic7ab86498e722e03748f650141d66bd89325af7e
diff --git a/src/test/bootstrap/com/android/tools/r8/bootstrap/BootstrapCurrentEqualityTest.java b/src/test/bootstrap/com/android/tools/r8/bootstrap/BootstrapCurrentEqualityTest.java
index 1f30ddf..74976e5 100644
--- a/src/test/bootstrap/com/android/tools/r8/bootstrap/BootstrapCurrentEqualityTest.java
+++ b/src/test/bootstrap/com/android/tools/r8/bootstrap/BootstrapCurrentEqualityTest.java
@@ -18,7 +18,6 @@
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
-import com.android.tools.r8.TestRuntime;
 import com.android.tools.r8.TestRuntime.CfVm;
 import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.ToolHelper.ProcessResult;
@@ -66,13 +65,12 @@
     "}",
     "-allowaccessmodification"
   };
-  private static String HELLO_EXPECTED = StringUtils.lines("Hello, world!");
+  private static final String HELLO_EXPECTED = StringUtils.lines("Hello, world!");
 
   private static Pair<Path, Path> r8R8Debug;
   private static Pair<Path, Path> r8R8Release;
 
   private final TestParameters parameters;
-  private static boolean testExternal = false;
 
   @ClassRule public static TemporaryFolder testFolder = new TemporaryFolder();
 
@@ -99,28 +97,17 @@
     // Run R8 on r8.jar.
     final Path jar = testFolder.newFolder().toPath().resolve("out.jar");
     final Path map = testFolder.newFolder().toPath().resolve("out.map");
-    if (testExternal) {
-      testForExternalR8(newTempFolder(), Backend.CF)
-          .setMode(mode)
-          .addProgramFiles(ToolHelper.getR8WithRelocatedDeps())
-          .addLibraryFiles(TestRuntime.getSystemRuntime().getJavaHome())
-          .addKeepRuleFiles(MAIN_KEEP)
-          .compile()
-          .apply(c -> FileUtils.writeTextFile(map, c.getProguardMap()))
-          .writeToZip(jar);
-    } else {
-      testForR8(newTempFolder(), Backend.CF)
-          .setMode(mode)
-          .addProgramFiles(ToolHelper.getR8WithRelocatedDeps())
-          .addLibraryProvider(JdkClassFileProvider.fromSystemJdk())
-          .addKeepRuleFiles(MAIN_KEEP)
-          .enableExperimentalKeepAnnotations()
-          // TODO(b/176783536, b/270105162): Get a hold of dependencies in new gradle setup.
-          .apply(R8TestBuilder::allowUnusedDontWarnPatterns)
-          .compile()
-          .apply(c -> FileUtils.writeTextFile(map, c.getProguardMap()))
-          .writeToZip(jar);
-    }
+    testForR8(newTempFolder(), Backend.CF)
+        .setMode(mode)
+        .addProgramFiles(ToolHelper.getR8WithRelocatedDeps())
+        .addLibraryProvider(JdkClassFileProvider.fromSystemJdk())
+        .addKeepRuleFiles(MAIN_KEEP)
+        .enableExperimentalKeepAnnotations()
+        // TODO(b/176783536, b/270105162): Get a hold of dependencies in new gradle setup.
+        .apply(R8TestBuilder::allowUnusedDontWarnPatterns)
+        .compile()
+        .apply(c -> FileUtils.writeTextFile(map, c.getProguardMap()))
+        .writeToZip(jar);
     return new Pair<>(jar, map);
   }
 
@@ -208,56 +195,58 @@
   }
 
   @Test
-  public void test() throws Exception {
-    Path program = testFolder.newFolder().toPath().resolve("hello.jar");
-    writeClassesToJar(program, HELLO_CLASS);
+  public void testJvm() throws Exception {
+    Path program = writeClassesToJar(HELLO_CLASS);
     testForJvm(parameters)
         .addProgramFiles(program)
         .run(parameters.getRuntime(), HELLO_NAME)
-        .assertSuccessWithOutput(HELLO_EXPECTED)
-        .apply(r -> compareR8(program, HELLO_EXPECTED, KEEP_HELLO, HELLO_NAME));
+        .assertSuccessWithOutput(HELLO_EXPECTED);
   }
 
-  private void compareR8(Path program, String expectedOutput, String[] keep, String main)
-      throws Exception {
+  @Test
+  public void testR8() throws Exception {
+    Path program = writeClassesToJar(HELLO_CLASS);
+    compareR8(program);
+  }
+
+  private void compareR8(Path program) throws Exception {
     ExternalR8TestCompileResult runR8Debug =
         testForExternalR8(newTempFolder(), parameters.getBackend(), parameters.getRuntime())
             .addProgramFiles(program)
-            .addKeepRules(keep)
+            .addKeepRules(BootstrapCurrentEqualityTest.KEEP_HELLO)
             .setMode(CompilationMode.DEBUG)
             .compile();
     testForJvm(parameters)
         .addProgramFiles(runR8Debug.outputJar())
-        .run(parameters.getRuntime(), main)
-        .assertSuccessWithOutput(expectedOutput);
+        .run(parameters.getRuntime(), BootstrapCurrentEqualityTest.HELLO_NAME)
+        .assertSuccessWithOutput(HELLO_EXPECTED);
     ExternalR8TestCompileResult runR8Release =
         testForExternalR8(newTempFolder(), parameters.getBackend(), parameters.getRuntime())
             .addProgramFiles(program)
-            .addKeepRules(keep)
+            .addKeepRules(BootstrapCurrentEqualityTest.KEEP_HELLO)
             .setMode(CompilationMode.RELEASE)
             .compile();
     testForJvm(parameters)
         .addProgramFiles(runR8Release.outputJar())
-        .run(parameters.getRuntime(), main)
-        .assertSuccessWithOutput(expectedOutput);
-    RunR8AndCheck(r8R8Debug, program, runR8Debug, keep, CompilationMode.DEBUG);
-    RunR8AndCheck(r8R8Debug, program, runR8Release, keep, CompilationMode.RELEASE);
-    RunR8AndCheck(r8R8Release, program, runR8Debug, keep, CompilationMode.DEBUG);
-    RunR8AndCheck(r8R8Release, program, runR8Release, keep, CompilationMode.RELEASE);
+        .run(parameters.getRuntime(), BootstrapCurrentEqualityTest.HELLO_NAME)
+        .assertSuccessWithOutput(HELLO_EXPECTED);
+    RunR8AndCheck(r8R8Debug, program, runR8Debug, CompilationMode.DEBUG);
+    RunR8AndCheck(r8R8Debug, program, runR8Release, CompilationMode.RELEASE);
+    RunR8AndCheck(r8R8Release, program, runR8Debug, CompilationMode.DEBUG);
+    RunR8AndCheck(r8R8Release, program, runR8Release, CompilationMode.RELEASE);
   }
 
   private void RunR8AndCheck(
       Pair<Path, Path> r8,
       Path program,
       ExternalR8TestCompileResult result,
-      String[] keep,
       CompilationMode mode)
       throws Exception {
     ExternalR8TestCompileResult runR8R8 =
         testForExternalR8(newTempFolder(), parameters.getBackend(), parameters.getRuntime())
             .useProvidedR8(r8.getFirst())
             .addProgramFiles(program)
-            .addKeepRules(keep)
+            .addKeepRules(BootstrapCurrentEqualityTest.KEEP_HELLO)
             .setMode(mode)
             .compile();
     // Check that the process outputs (exit code, stdout, stderr) are the same.
diff --git a/src/test/bootstrap/com/android/tools/r8/bootstrap/HelloWorldCompiledOnArtTest.java b/src/test/bootstrap/com/android/tools/r8/bootstrap/HelloWorldCompiledOnArtTest.java
index 31a8108..197683f 100644
--- a/src/test/bootstrap/com/android/tools/r8/bootstrap/HelloWorldCompiledOnArtTest.java
+++ b/src/test/bootstrap/com/android/tools/r8/bootstrap/HelloWorldCompiledOnArtTest.java
@@ -73,9 +73,7 @@
   }
 
   private Path writeHelloProgramJar() throws IOException {
-    Path jar = temp.newFolder().toPath().resolve("hello.jar");
-    writeClassesToJar(jar, HELLO_CLASS);
-    return jar;
+    return writeClassesToJar(HELLO_CLASS);
   }
 
   @Test
diff --git a/src/test/bootstrap/com/android/tools/r8/bootstrap/Java17R8BootstrapTest.java b/src/test/bootstrap/com/android/tools/r8/bootstrap/Java17R8BootstrapTest.java
index d410299..d058a31 100644
--- a/src/test/bootstrap/com/android/tools/r8/bootstrap/Java17R8BootstrapTest.java
+++ b/src/test/bootstrap/com/android/tools/r8/bootstrap/Java17R8BootstrapTest.java
@@ -84,9 +84,7 @@
   }
 
   private Path writeHelloProgramJar() throws IOException {
-    Path jar = temp.newFolder().toPath().resolve("hello.jar");
-    writeClassesToJar(jar, HELLO_CLASS);
-    return jar;
+    return writeClassesToJar(HELLO_CLASS);
   }
 
   @Test
diff --git a/src/test/java/com/android/tools/r8/R8CommandTest.java b/src/test/java/com/android/tools/r8/R8CommandTest.java
index 208d106..7da9dfa 100644
--- a/src/test/java/com/android/tools/r8/R8CommandTest.java
+++ b/src/test/java/com/android/tools/r8/R8CommandTest.java
@@ -70,15 +70,11 @@
   static class B {}
 
   private Path getJarWithA() throws Exception {
-    Path jar = temp.newFolder().toPath().resolve("out.jar");
-    writeClassesToJar(jar, A.class);
-    return jar;
+    return writeClassesToJar(A.class);
   }
 
   private Path getJarWithB() throws Exception {
-    Path jar = temp.newFolder().toPath().resolve("out.jar");
-    writeClassesToJar(jar, B.class);
-    return jar;
+    return writeClassesToJar(B.class);
   }
 
   private Path getTestResources() throws Exception {
diff --git a/src/test/java/com/android/tools/r8/d8/DexVersionTests.java b/src/test/java/com/android/tools/r8/d8/DexVersionTests.java
index 9804829..f84cccd 100644
--- a/src/test/java/com/android/tools/r8/d8/DexVersionTests.java
+++ b/src/test/java/com/android/tools/r8/d8/DexVersionTests.java
@@ -52,8 +52,7 @@
 
   @Before
   public void compileVersions() throws Exception {
-    Path inputJar1 = getStaticTemp().newFolder().toPath().resolve("input1.jar");
-    writeClassesToJar(inputJar1, Input1.class);
+    Path inputJar1 = writeClassesToJar(Input1.class);
     D8Command.Builder arrayAccessBuilder = D8Command.builder().addProgramFiles(inputJar1);
     D8.run(
         arrayAccessBuilder
@@ -70,8 +69,7 @@
             .setMinApiLevel(AndroidApiLevel.N.getLevel())
             .build());
 
-    Path inputJar2 = getStaticTemp().newFolder().toPath().resolve("input2.jar");
-    writeClassesToJar(inputJar2, Input2.class);
+    Path inputJar2 = writeClassesToJar(Input2.class);
     D8Command.Builder arithmeticBuilder = D8Command.builder().addProgramFiles(inputJar2);
     D8.run(
         arithmeticBuilder
diff --git a/src/test/java/com/android/tools/r8/kotlin/lambda/b148525512/B148525512.java b/src/test/java/com/android/tools/r8/kotlin/lambda/b148525512/B148525512.java
index a601fc8..28b5ade 100644
--- a/src/test/java/com/android/tools/r8/kotlin/lambda/b148525512/B148525512.java
+++ b/src/test/java/com/android/tools/r8/kotlin/lambda/b148525512/B148525512.java
@@ -16,7 +16,7 @@
 import com.android.tools.r8.synthesis.SyntheticItemsTestUtils;
 import com.android.tools.r8.utils.ArchiveResourceProvider;
 import java.io.IOException;
-import java.nio.file.Files;
+import java.io.UncheckedIOException;
 import java.nio.file.Path;
 import java.util.Collection;
 import org.junit.Test;
@@ -32,6 +32,7 @@
   private static final String featureKtClassNamet = kotlinTestClassesPackage + ".FeatureKt";
   private static final String baseClassName = kotlinTestClassesPackage + ".Base";
 
+  private static Path featureApiPath;
   private static final KotlinCompileMemoizer kotlinBaseClasses =
       getCompileMemoizer(getKotlinFileInTestPackage(pkg, "base"))
           .configure(
@@ -62,16 +63,14 @@
   }
 
   private static Path getFeatureApiPath() {
-    try {
-      Path featureApiJar = getStaticTemp().getRoot().toPath().resolve("feature_api.jar");
-      if (Files.exists(featureApiJar)) {
-        return featureApiJar;
+    if (featureApiPath == null) {
+      try {
+        return writeClassesToJar(FeatureAPI.class);
+      } catch (IOException e) {
+        throw new UncheckedIOException(e);
       }
-      writeClassesToJar(featureApiJar, FeatureAPI.class);
-      return featureApiJar;
-    } catch (IOException e) {
-      throw new RuntimeException(e);
     }
+    return featureApiPath;
   }
 
   @Test
diff --git a/src/test/java/com/android/tools/r8/regress/b191296688/Regress191296688.java b/src/test/java/com/android/tools/r8/regress/b191296688/Regress191296688.java
index 7f9b488..d7e443b 100644
--- a/src/test/java/com/android/tools/r8/regress/b191296688/Regress191296688.java
+++ b/src/test/java/com/android/tools/r8/regress/b191296688/Regress191296688.java
@@ -44,8 +44,7 @@
 
   @Test
   public void testRegress191296688() throws Exception {
-    Path aLib = temp.newFolder().toPath().resolve("alib.jar");
-    writeClassesToJar(aLib, A.class);
+    Path aLib = writeClassesToJar(A.class);
     String folder = DescriptorUtils.getBinaryNameFromJavaType(PKG);
     CfRuntime cfRuntime = TestRuntime.getCheckedInJdk9();
     Path ktClasses =
diff --git a/src/test/java/com/android/tools/r8/resolution/packageprivate/PackagePrivateClasspathWidenTest.java b/src/test/java/com/android/tools/r8/resolution/packageprivate/PackagePrivateClasspathWidenTest.java
index 5da6e09..e28f415 100644
--- a/src/test/java/com/android/tools/r8/resolution/packageprivate/PackagePrivateClasspathWidenTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/packageprivate/PackagePrivateClasspathWidenTest.java
@@ -57,8 +57,7 @@
 
   @BeforeClass
   public static void createClassPathJar() throws IOException {
-    classPathJar = getStaticTemp().newFile("classpath.jar").toPath();
-    writeClassesToJar(classPathJar, CLASSPATH_CLASSES);
+    classPathJar = writeClassesToJar(CLASSPATH_CLASSES);
   }
 
   @Test
diff --git a/src/test/testbase/java/com/android/tools/r8/TestBase.java b/src/test/testbase/java/com/android/tools/r8/TestBase.java
index 5512419..1351448 100644
--- a/src/test/testbase/java/com/android/tools/r8/TestBase.java
+++ b/src/test/testbase/java/com/android/tools/r8/TestBase.java
@@ -1442,8 +1442,10 @@
     consumer.finished(null);
   }
 
-  protected static void writeClassesToJar(Path output, Class<?>... classes) throws IOException {
-    writeClassesToJar(output, Arrays.asList(classes));
+  protected static Path writeClassesToJar(Class<?>... classes) throws IOException {
+    Path jar = staticTemp.newFolder().toPath().resolve("classes.jar");
+    writeClassesToJar(jar, Arrays.asList(classes));
+    return jar;
   }
 
   protected static void writeClassFileDataToJar(Path output, Collection<byte[]> classes) {