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 {