Ensure output directory for test mock classes exists, again.

This is an extended version of go/r8g/45519, which attempted to remedy
go/r8g/45513 (tooling for Java source compilation).

Test: remove build/classes/java/jdk11Tests and run
  $ tools/test.py *Jdk11*

Change-Id: Iab15a47d71deb43512060403985b3a4ca4b3c2a9
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..db0a09a 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
@@ -15,6 +15,7 @@
 import com.android.tools.r8.ToolHelper.DexVm.Version;
 import com.android.tools.r8.utils.BooleanUtils;
 import com.android.tools.r8.utils.StringUtils;
+import java.io.File;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Collections;
@@ -62,6 +63,8 @@
 
   @BeforeClass
   public static void compileAtomicClasses() throws Exception {
+    File atomicClassesDir = new File(ATOMIC_COMPILED_TESTS_FOLDER.toString());
+    assert atomicClassesDir.exists() || atomicClassesDir.mkdirs();
     javac(CfVm.JDK11, getStaticTemp())
         .addClasspathFiles(
             Collections.singletonList(Paths.get(JDK_TESTS_BUILD_DIR + "testng-6.10.jar")))
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..71458f0 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
@@ -22,6 +22,7 @@
 import com.android.tools.r8.utils.BooleanUtils;
 import com.android.tools.r8.utils.StringUtils;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
+import java.io.File;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
@@ -73,30 +74,35 @@
   }
 
   @BeforeClass
-  public static void compileAtomicClasses() throws Exception {
+  public static void compileConcurrentClasses() throws Exception {
+    File concurrentClassesDir = new File(CONCURRENT_COMPILED_TESTS_FOLDER.toString());
+    assert concurrentClassesDir.exists() || concurrentClassesDir.mkdirs();
     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();
-    List<Path> concHashFilesAndDependencies = new ArrayList<>();
+    CONCURRENT_COMPILED_TESTS_FILES =
+        getAllFilesWithSuffixInDirectory(CONCURRENT_COMPILED_TESTS_FOLDER, CLASS_EXTENSION);
+    assert CONCURRENT_COMPILED_TESTS_FILES.length > 0;
+
+    List<Path> concurrentHashFilesAndDependencies = new ArrayList<>();
     Collections.addAll(
-        concHashFilesAndDependencies,
+        concurrentHashFilesAndDependencies,
         getAllFilesWithSuffixInDirectory(CONCURRENT_HASH_TESTS_FOLDER, JAVA_EXTENSION));
-    Collections.addAll(concHashFilesAndDependencies, SUPPORT_LIBS);
-    Path[] classesToCompile = concHashFilesAndDependencies.toArray(new Path[0]);
+    Collections.addAll(concurrentHashFilesAndDependencies, SUPPORT_LIBS);
+    Path[] classesToCompile = concurrentHashFilesAndDependencies.toArray(new Path[0]);
+    File concurrentHashClassesDir = new File(CONCURRENT_HASH_COMPILED_TESTS_FOLDER.toString());
+    assert concurrentHashClassesDir.exists() || concurrentHashClassesDir.mkdirs();
     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();
-    CONCURRENT_COMPILED_TESTS_FILES =
-        getAllFilesWithSuffixInDirectory(CONCURRENT_COMPILED_TESTS_FOLDER, CLASS_EXTENSION);
     CONCURRENT_HASH_COMPILED_TESTS_FILES =
         getAllFilesWithSuffixInDirectory(CONCURRENT_HASH_COMPILED_TESTS_FOLDER, CLASS_EXTENSION);
-    assert CONCURRENT_COMPILED_TESTS_FILES.length > 0;
     assert CONCURRENT_HASH_COMPILED_TESTS_FILES.length > 0;
   }
 
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 5789ce7..ca66c7b 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
@@ -73,22 +73,20 @@
   @BeforeClass
   public static void compileJavaBaseExtensions() throws Exception {
     File extensionClassesDir = new File(JDK_11_JAVA_BASE_EXTENSION_CLASSES_DIR.toString());
-    if (!extensionClassesDir.exists()) {
-      extensionClassesDir.mkdirs();
-      List<String> options =
-          Arrays.asList(
-              "--add-reads",
-              "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();
-    }
+    assert extensionClassesDir.exists() || extensionClassesDir.mkdirs();
+    List<String> options =
+        Arrays.asList(
+            "--add-reads",
+            "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();
     JDK_11_JAVA_BASE_EXTENSION_COMPILED_FILES =
         getAllFilesWithSuffixInDirectory(JDK_11_JAVA_BASE_EXTENSION_CLASSES_DIR, CLASS_EXTENSION);
     assert JDK_11_JAVA_BASE_EXTENSION_COMPILED_FILES.length > 0;
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..9f64237 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
@@ -12,6 +12,7 @@
 import com.android.tools.r8.TestParametersCollection;
 import com.android.tools.r8.TestRuntime.CfVm;
 import com.android.tools.r8.ToolHelper;
+import java.io.File;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import org.junit.Assume;
@@ -65,10 +66,15 @@
 
   @BeforeClass
   public static void compileMathClasses() throws Exception {
+    File mathClassesDir = new File(JDK_11_MATH_TESTS_DIR.toString());
+    assert mathClassesDir.exists() || mathClassesDir.mkdirs();
     javac(CfVm.JDK11, getStaticTemp())
         .addSourceFiles(JDK_11_MATH_JAVA_FILES)
         .setOutputPath(JDK_11_MATH_TESTS_DIR)
         .compile();
+
+    File strictMathClassesDir = new File(JDK_11_STRICT_MATH_TESTS_DIR.toString());
+    assert strictMathClassesDir.exists() || strictMathClassesDir.mkdirs();
     javac(CfVm.JDK11, getStaticTemp())
         .addSourceFiles(JDK_11_STRICT_MATH_JAVA_FILES)
         .setOutputPath(JDK_11_STRICT_MATH_TESTS_DIR)
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..730ee1b 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
@@ -13,6 +13,7 @@
 import com.android.tools.r8.TestRuntime.CfVm;
 import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.ToolHelper.DexVm;
+import java.io.File;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import org.junit.Assume;
@@ -52,6 +53,8 @@
 
   @BeforeClass
   public static void compileObjectsClass() throws Exception {
+    File objectsDir = new File(JDK_11_OBJECTS_TESTS_DIR.toString());
+    assert objectsDir.exists() || objectsDir.mkdirs();
     javac(CfVm.JDK11, getStaticTemp())
         .addSourceFiles(JDK_11_OBJECTS_JAVA_DIR.resolve(BASIC_OBJECTS_TEST + JAVA_EXTENSION))
         .setOutputPath(JDK_11_OBJECTS_TESTS_DIR)
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..d08d9d3 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
@@ -165,21 +165,21 @@
 
   @BeforeClass
   public static void compileJdk11StreamTests() throws Exception {
-    if (!new File(JDK_11_STREAM_TEST_CLASSES_DIR.toString()).exists()) {
-      List<String> options =
-          Arrays.asList(
-              "--add-reads",
-              "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();
-    }
+    File streamClassesDir = new File(JDK_11_STREAM_TEST_CLASSES_DIR.toString());
+    assert streamClassesDir.exists() || streamClassesDir.mkdirs();
+    List<String> options =
+        Arrays.asList(
+            "--add-reads",
+            "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();
     JDK_11_STREAM_TEST_COMPILED_FILES =
         getAllFilesWithSuffixInDirectory(JDK_11_STREAM_TEST_CLASSES_DIR, CLASS_EXTENSION);
     assert JDK_11_STREAM_TEST_COMPILED_FILES.length > 0;