Account for relative paths with no parent
Change-Id: Ic60fda093126c77e4809cd2b3a1f0233cf72ae2f
diff --git a/src/main/java/com/android/tools/r8/StringConsumer.java b/src/main/java/com/android/tools/r8/StringConsumer.java
index 1920d6d..d8f7d39 100644
--- a/src/main/java/com/android/tools/r8/StringConsumer.java
+++ b/src/main/java/com/android/tools/r8/StringConsumer.java
@@ -7,7 +7,6 @@
import com.android.tools.r8.origin.PathOrigin;
import com.android.tools.r8.utils.ExceptionDiagnostic;
import java.io.BufferedWriter;
-import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
@@ -102,9 +101,9 @@
public void accept(String string, DiagnosticsHandler handler) {
super.accept(string, handler);
try {
- File parent = outputPath.getParent().toFile();
- if (!parent.exists()) {
- parent.mkdirs();
+ Path parent = outputPath.getParent();
+ if (parent != null && !parent.toFile().exists()) {
+ Files.createDirectories(parent);
}
Files.write(outputPath, string.getBytes(encoding));
} catch (IOException e) {
diff --git a/src/test/java/com/android/tools/r8/utils/GenerateMainDexListCommandTest.java b/src/test/java/com/android/tools/r8/utils/GenerateMainDexListCommandTest.java
index c80b72e..6b4be93 100644
--- a/src/test/java/com/android/tools/r8/utils/GenerateMainDexListCommandTest.java
+++ b/src/test/java/com/android/tools/r8/utils/GenerateMainDexListCommandTest.java
@@ -15,6 +15,7 @@
import com.android.tools.r8.GenerateMainDexListCommand;
import com.android.tools.r8.StringConsumer;
import com.android.tools.r8.ToolHelper;
+import com.android.tools.r8.ToolHelper.ProcessResult;
import com.android.tools.r8.origin.Origin;
import com.google.common.collect.ImmutableList;
import java.io.IOException;
@@ -95,8 +96,10 @@
addAndroidJarsToCommandLine(args);
addInputJarsToCommandLine(args);
addMainDexRuleToCommandLine(args);
- assertEquals(0, ToolHelper.forkGenerateMainDexList(
- working, args, "--main-dex-list-output", mainDexListOutput).exitCode);
+ ProcessResult result =
+ ToolHelper.forkGenerateMainDexList(
+ working, args, "--main-dex-list-output", mainDexListOutput);
+ assertEquals(result.stderr, 0, result.exitCode);
assertTrue(Files.exists(output));
assertTrue(Files.size(output) > 0);
}