Revert "Tool helper for Java source compilation."

This reverts commit 7b944e56a7a6285468de5bc3183984ef0e86a9b7.

Reason for revert: needs jar/dir handling

Change-Id: I7c7763b85bccda41a90ef0ee1b480f515a3ef0c7
diff --git a/src/test/java/com/android/tools/r8/JavaCompilerTool.java b/src/test/java/com/android/tools/r8/JavaCompilerTool.java
deleted file mode 100644
index 5ceee53..0000000
--- a/src/test/java/com/android/tools/r8/JavaCompilerTool.java
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8;
-
-import static com.android.tools.r8.ToolHelper.isWindows;
-import static org.junit.Assert.assertEquals;
-
-import com.android.tools.r8.TestRuntime.CfVm;
-import com.android.tools.r8.ToolHelper.ProcessResult;
-import java.io.IOException;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.stream.Collectors;
-import org.junit.rules.TemporaryFolder;
-
-public class JavaCompilerTool {
-
-  private final CfVm jdk;
-  private final TestState state;
-  private final List<Path> sources = new ArrayList<>();
-  private final List<Path> classpath = new ArrayList<>();
-  private final List<String> options = new ArrayList<>();
-  private Path output = null;
-
-  private JavaCompilerTool(CfVm jdk, TestState state) {
-    this.jdk = jdk;
-    this.state = state;
-  }
-
-  public static JavaCompilerTool create(CfVm jdk, TemporaryFolder temp) {
-    assert temp != null;
-    return create(jdk, new TestState(temp));
-  }
-
-  public static JavaCompilerTool create(CfVm jdk, TestState state) {
-    assert state != null;
-    return new JavaCompilerTool(jdk, state);
-  }
-
-  public JavaCompilerTool addOptions(String... options) {
-    return addOptions(Arrays.asList(options));
-  }
-
-  public JavaCompilerTool addOptions(Collection<String> options) {
-    this.options.addAll(options);
-    return this;
-  }
-
-  public JavaCompilerTool addSourceFiles(Path... files) {
-    return addSourceFiles(Arrays.asList(files));
-  }
-
-  public JavaCompilerTool addSourceFiles(Collection<Path> files) {
-    sources.addAll(files);
-    return this;
-  }
-
-  public JavaCompilerTool addClasspathFiles(Path... files) {
-    return addClasspathFiles(Arrays.asList(files));
-  }
-
-  public JavaCompilerTool addClasspathFiles(Collection<Path> files) {
-    classpath.addAll(files);
-    return this;
-  }
-
-  public JavaCompilerTool setOutputPath(Path file) {
-    this.output = file;
-    return this;
-  }
-
-  private Path getOrCreateOutputPath() throws IOException {
-    return output != null ? output : state.getNewTempFolder().resolve("out.jar");
-  }
-
-  /** Compile and return the compilations process result object. */
-  public ProcessResult compile() throws IOException {
-    return compileInternal(getOrCreateOutputPath());
-  }
-
-  /** Compile asserting success and return the output path. */
-  public Path compileAndWrite() throws IOException {
-    Path output = getOrCreateOutputPath();
-    compileAndWriteTo(output);
-    return output;
-  }
-
-  /** Compile asserting success and write to the given output path. */
-  public void compileAndWriteTo(Path output) throws IOException {
-    ProcessResult result = compileInternal(output);
-    assertEquals(result.toString(), result.exitCode, 0);
-  }
-
-  private ProcessResult compileInternal(Path output) throws IOException {
-    List<String> cmdline = new ArrayList<>();
-    cmdline.add(ToolHelper.getJavaExecutable(jdk) + "c");
-    cmdline.addAll(options);
-    if (!classpath.isEmpty()) {
-      cmdline.add("-cp");
-      cmdline.add(
-          classpath.stream()
-              .map(Path::toString)
-              .collect(Collectors.joining(isWindows() ? ";" : ":")));
-    }
-    cmdline.add("-d");
-    cmdline.add(output.toString());
-    for (Path source : sources) {
-      cmdline.add(source.toString());
-    }
-    ProcessBuilder builder = new ProcessBuilder(cmdline);
-    return ToolHelper.runProcess(builder);
-  }
-}
diff --git a/src/test/java/com/android/tools/r8/TestBase.java b/src/test/java/com/android/tools/r8/TestBase.java
index bc36d20..1fc315b 100644
--- a/src/test/java/com/android/tools/r8/TestBase.java
+++ b/src/test/java/com/android/tools/r8/TestBase.java
@@ -11,8 +11,6 @@
 
 import com.android.tools.r8.ClassFileConsumer.ArchiveConsumer;
 import com.android.tools.r8.DataResourceProvider.Visitor;
-import com.android.tools.r8.TestRuntime.CfRuntime;
-import com.android.tools.r8.TestRuntime.CfVm;
 import com.android.tools.r8.ToolHelper.ArtCommandBuilder;
 import com.android.tools.r8.ToolHelper.DexVm;
 import com.android.tools.r8.ToolHelper.ProcessResult;
@@ -181,14 +179,6 @@
     return testForMainDexListGenerator(temp);
   }
 
-  public JavaCompilerTool javac(CfRuntime jdk) {
-    return JavaCompilerTool.create(jdk.getVm(), temp);
-  }
-
-  public static JavaCompilerTool javac(CfVm jdk, TemporaryFolder temp) {
-    return JavaCompilerTool.create(jdk, temp);
-  }
-
   // Actually running Proguard should only be during development.
   private static final boolean RUN_PROGUARD = System.getProperty("run_proguard") != null;
   // Actually running r8.jar in a forked process.
diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index 38fb7c7..a84064a 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -1266,6 +1266,53 @@
     return runJava(runtime, ImmutableList.of(), classpath, args);
   }
 
+  public static ProcessResult runJavac(
+      CfVm runtime, List<Path> classPath, Path directoryToCompileInto, Path... classesToCompile)
+      throws IOException {
+    return runJavac(runtime, classPath, directoryToCompileInto, null, classesToCompile);
+  }
+
+  public static ProcessResult runJavac(
+      CfVm runtime,
+      List<Path> classPath,
+      Path directoryToCompileInto,
+      List<String> extraOptions,
+      Path... classesToCompile)
+      throws IOException {
+    String[] strings = Arrays.stream(classesToCompile).map(Path::toString).toArray(String[]::new);
+    List<String> cp = classPath == null ? null : classPath.stream().map(Path::toString).collect(
+        Collectors.toList());
+    return runJavac(runtime, cp, directoryToCompileInto.toString(), extraOptions, strings);
+  }
+
+  public static ProcessResult runJavac(
+      CfVm runtime,
+      List<String> classPath,
+      String directoryToCompileInto,
+      List<String> extraOptions,
+      String... classesToCompile)
+      throws IOException {
+    List<String> cmdline =
+        new ArrayList<>(
+            Collections.singletonList(TestRuntime.getCheckInJDKPathFor(runtime).toString() + "c"));
+    if (extraOptions != null) {
+      cmdline.addAll(extraOptions);
+    }
+    if (classPath != null) {
+      cmdline.add("-cp");
+      if (isWindows()) {
+        cmdline.add(String.join(";", classPath));
+      } else {
+        cmdline.add(String.join(":", classPath));
+      }
+    }
+    cmdline.add("-d");
+    cmdline.add(directoryToCompileInto);
+    Collections.addAll(cmdline, classesToCompile);
+    ProcessBuilder builder = new ProcessBuilder(cmdline);
+    return ToolHelper.runProcess(builder);
+  }
+
   public static ProcessResult runKotlinc(
       CfVm runtime,
       List<Path> classPaths,
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/APIConversionTestBase.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/APIConversionTestBase.java
index 1a2528d..6825616 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/APIConversionTestBase.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/conversiontests/APIConversionTestBase.java
@@ -4,11 +4,11 @@
 
 package com.android.tools.r8.desugar.desugaredlibrary.conversiontests;
 
-import com.android.tools.r8.TestRuntime.CfRuntime;
 import com.android.tools.r8.TestRuntime.CfVm;
 import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.desugar.desugaredlibrary.CoreLibDesugarTestBase;
 import com.android.tools.r8.utils.AndroidApiLevel;
+import java.io.File;
 import java.io.IOException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -25,26 +25,26 @@
         "JDK8 javac is required to avoid dealing with modules and JDK8 is not checked-in on"
             + " windows",
         !ToolHelper.isWindows());
-
-    CfRuntime runtime = new CfRuntime(CfVm.JDK8);
-    Path conversionFolder = temp.newFolder("conversions").toPath();
+    File conversionFolder = temp.newFolder("conversions");
+    File stubsFolder = temp.newFolder("stubs");
 
     // Compile the stubs to be able to compile the conversions.
-    Path stubsJar =
-        javac(runtime)
-            .addSourceFiles(
-                getAllFilesWithSuffixInDirectory(CONVERSION_FOLDER.resolve("stubs"), "java"))
-            .compileAndWrite();
+    ToolHelper.runJavac(
+        CfVm.JDK8,
+        null,
+        stubsFolder.toPath(),
+        getAllFilesWithSuffixInDirectory(CONVERSION_FOLDER.resolve("stubs"), "java"));
 
     // Compile the conversions using the stubs.
-    javac(runtime)
-        .setOutputPath(conversionFolder)
-        .addClasspathFiles(stubsJar)
-        .addSourceFiles(
-            getAllFilesWithSuffixInDirectory(CONVERSION_FOLDER.resolve("conversions"), "java"))
-        .compile();
+    ArrayList<Path> classPath = new ArrayList<>();
+    classPath.add(stubsFolder.toPath());
+    ToolHelper.runJavac(
+        CfVm.JDK8,
+        classPath,
+        conversionFolder.toPath(),
+        getAllFilesWithSuffixInDirectory(CONVERSION_FOLDER.resolve("conversions"), "java"));
 
-    Path[] classes = getAllFilesWithSuffixInDirectory(conversionFolder, "class");
+    Path[] classes = getAllFilesWithSuffixInDirectory(conversionFolder.toPath(), "class");
     assert classes.length > 0
         : "Something went wrong during compilation, check the runJavac return value for debugging.";
     return classes;
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11AtomicTests.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11AtomicTests.java
index 313dc3e..ff60941 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11AtomicTests.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11AtomicTests.java
@@ -62,12 +62,11 @@
 
   @BeforeClass
   public static void compileAtomicClasses() throws Exception {
-    javac(CfVm.JDK11, getStaticTemp())
-        .addClasspathFiles(
-            Collections.singletonList(Paths.get(JDK_TESTS_BUILD_DIR + "testng-6.10.jar")))
-        .addSourceFiles(ATOMIC_TESTS_FILES)
-        .setOutputPath(ATOMIC_COMPILED_TESTS_FOLDER)
-        .compile();
+    ToolHelper.runJavac(
+        CfVm.JDK11,
+        Collections.singletonList(Paths.get(JDK_TESTS_BUILD_DIR + "testng-6.10.jar")),
+        ATOMIC_COMPILED_TESTS_FOLDER,
+        ATOMIC_TESTS_FILES);
   }
 
   @Test
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11ConcurrentMapTests.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11ConcurrentMapTests.java
index 7caa2ee..b983d33 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11ConcurrentMapTests.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11ConcurrentMapTests.java
@@ -74,24 +74,21 @@
 
   @BeforeClass
   public static void compileAtomicClasses() throws Exception {
-    javac(CfVm.JDK11, getStaticTemp())
-        .addClasspathFiles(
-            Collections.singletonList(Paths.get(JDK_TESTS_BUILD_DIR + "testng-6.10.jar")))
-        .addSourceFiles(getAllFilesWithSuffixInDirectory(CONCURRENT_TESTS_FOLDER, JAVA_EXTENSION))
-        .setOutputPath(CONCURRENT_COMPILED_TESTS_FOLDER)
-        .compile();
+    ToolHelper.runJavac(
+        CfVm.JDK11,
+        Collections.singletonList(Paths.get(JDK_TESTS_BUILD_DIR + "testng-6.10.jar")),
+        CONCURRENT_COMPILED_TESTS_FOLDER,
+        getAllFilesWithSuffixInDirectory(CONCURRENT_TESTS_FOLDER, JAVA_EXTENSION));
     List<Path> concHashFilesAndDependencies = new ArrayList<>();
     Collections.addAll(
         concHashFilesAndDependencies,
         getAllFilesWithSuffixInDirectory(CONCURRENT_HASH_TESTS_FOLDER, JAVA_EXTENSION));
     Collections.addAll(concHashFilesAndDependencies, SUPPORT_LIBS);
-    Path[] classesToCompile = concHashFilesAndDependencies.toArray(new Path[0]);
-    javac(CfVm.JDK11, getStaticTemp())
-        .addClasspathFiles(
-            Collections.singletonList(Paths.get(JDK_TESTS_BUILD_DIR + "testng-6.10.jar")))
-        .addSourceFiles(classesToCompile)
-        .setOutputPath(CONCURRENT_HASH_COMPILED_TESTS_FOLDER)
-        .compile();
+    ToolHelper.runJavac(
+        CfVm.JDK11,
+        Collections.singletonList(Paths.get(JDK_TESTS_BUILD_DIR + "testng-6.10.jar")),
+        CONCURRENT_HASH_COMPILED_TESTS_FOLDER,
+        concHashFilesAndDependencies.toArray(new Path[0]));
     CONCURRENT_COMPILED_TESTS_FILES =
         getAllFilesWithSuffixInDirectory(CONCURRENT_COMPILED_TESTS_FOLDER, CLASS_EXTENSION);
     CONCURRENT_HASH_COMPILED_TESTS_FILES =
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11CoreLibTestBase.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11CoreLibTestBase.java
index 5e7a61c..f9ee2cc 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11CoreLibTestBase.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11CoreLibTestBase.java
@@ -79,13 +79,12 @@
               "java.base=ALL-UNNAMED",
               "--patch-module",
               "java.base=" + JDK_11_JAVA_BASE_EXTENSION_FILES_DIR);
-      javac(CfVm.JDK11, getStaticTemp())
-          .addOptions(options)
-          .addClasspathFiles(
-              Collections.singletonList(Paths.get(JDK_TESTS_BUILD_DIR + "testng-6.10.jar")))
-          .addSourceFiles(getJavaBaseExtensionsFiles())
-          .setOutputPath(JDK_11_JAVA_BASE_EXTENSION_CLASSES_DIR)
-          .compile();
+      ToolHelper.runJavac(
+          CfVm.JDK11,
+          Collections.singletonList(Paths.get(JDK_TESTS_BUILD_DIR + "testng-6.10.jar")),
+          JDK_11_JAVA_BASE_EXTENSION_CLASSES_DIR,
+          options,
+          getJavaBaseExtensionsFiles());
     }
     JDK_11_JAVA_BASE_EXTENSION_COMPILED_FILES =
         getAllFilesWithSuffixInDirectory(JDK_11_JAVA_BASE_EXTENSION_CLASSES_DIR, CLASS_EXTENSION);
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11MathTests.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11MathTests.java
index b5a8e78..9d84630 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11MathTests.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11MathTests.java
@@ -65,14 +65,9 @@
 
   @BeforeClass
   public static void compileMathClasses() throws Exception {
-    javac(CfVm.JDK11, getStaticTemp())
-        .addSourceFiles(JDK_11_MATH_JAVA_FILES)
-        .setOutputPath(JDK_11_MATH_TESTS_DIR)
-        .compile();
-    javac(CfVm.JDK11, getStaticTemp())
-        .addSourceFiles(JDK_11_STRICT_MATH_JAVA_FILES)
-        .setOutputPath(JDK_11_STRICT_MATH_TESTS_DIR)
-        .compile();
+    ToolHelper.runJavac(CfVm.JDK11, null, JDK_11_MATH_TESTS_DIR, JDK_11_MATH_JAVA_FILES);
+    ToolHelper.runJavac(
+        CfVm.JDK11, null, JDK_11_STRICT_MATH_TESTS_DIR, JDK_11_STRICT_MATH_JAVA_FILES);
   }
 
   @Test
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11ObjectsTests.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11ObjectsTests.java
index bba8bb6..39cfe0c 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11ObjectsTests.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11ObjectsTests.java
@@ -52,10 +52,11 @@
 
   @BeforeClass
   public static void compileObjectsClass() throws Exception {
-    javac(CfVm.JDK11, getStaticTemp())
-        .addSourceFiles(JDK_11_OBJECTS_JAVA_DIR.resolve(BASIC_OBJECTS_TEST + JAVA_EXTENSION))
-        .setOutputPath(JDK_11_OBJECTS_TESTS_DIR)
-        .compile();
+    ToolHelper.runJavac(
+        CfVm.JDK11,
+        null,
+        JDK_11_OBJECTS_TESTS_DIR,
+        JDK_11_OBJECTS_JAVA_DIR.resolve(BASIC_OBJECTS_TEST + JAVA_EXTENSION));
   }
 
   @Test
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11StreamTests.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11StreamTests.java
index a072386..adc0928 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11StreamTests.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/desugaredlibraryjdktests/Jdk11StreamTests.java
@@ -172,13 +172,12 @@
               "java.base=ALL-UNNAMED",
               "--patch-module",
               "java.base=" + JDK_11_JAVA_BASE_EXTENSION_CLASSES_DIR);
-      javac(CfVm.JDK11, getStaticTemp())
-          .addOptions(options)
-          .addClasspathFiles(
-              Collections.singletonList(Paths.get(JDK_TESTS_BUILD_DIR + "testng-6.10.jar")))
-          .addSourceFiles(getJdk11StreamTestFiles())
-          .setOutputPath(JDK_11_STREAM_TEST_CLASSES_DIR)
-          .compile();
+      ToolHelper.runJavac(
+          CfVm.JDK11,
+          Collections.singletonList(Paths.get(JDK_TESTS_BUILD_DIR + "testng-6.10.jar")),
+          JDK_11_STREAM_TEST_CLASSES_DIR,
+          options,
+          getJdk11StreamTestFiles());
     }
     JDK_11_STREAM_TEST_COMPILED_FILES =
         getAllFilesWithSuffixInDirectory(JDK_11_STREAM_TEST_CLASSES_DIR, CLASS_EXTENSION);
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/r8ondex/HelloWorldCompiledOnArtTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/r8ondex/HelloWorldCompiledOnArtTest.java
index 2553658..bc2d017 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/r8ondex/HelloWorldCompiledOnArtTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/r8ondex/HelloWorldCompiledOnArtTest.java
@@ -26,6 +26,7 @@
 import java.io.IOException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.Collections;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -42,11 +43,14 @@
   @BeforeClass
   public static void compilePathBackport() throws Exception {
     assumeTrue("JDK8 is not checked-in on Windows", !ToolHelper.isWindows());
-    pathMock =
-        javac(CfVm.JDK8, getStaticTemp())
-            .addSourceFiles(
-                getAllFilesWithSuffixInDirectory(Paths.get("src/test/r8OnArtBackport"), "java"))
-            .compileAndWrite();
+    pathMock = getStaticTemp().newFolder("PathMock").toPath();
+    ProcessResult processResult =
+        ToolHelper.runJavac(
+            CfVm.JDK8,
+            Collections.emptyList(),
+            pathMock,
+            getAllFilesWithSuffixInDirectory(Paths.get("src/test/r8OnArtBackport"), "java"));
+    assertEquals(0, processResult.exitCode);
   }
 
   public static Path[] getPathBackport() throws Exception {