Merge "Flush data in StringConsumer"
diff --git a/src/main/java/com/android/tools/r8/StringConsumer.java b/src/main/java/com/android/tools/r8/StringConsumer.java
index 9232e08..23883e9 100644
--- a/src/main/java/com/android/tools/r8/StringConsumer.java
+++ b/src/main/java/com/android/tools/r8/StringConsumer.java
@@ -147,6 +147,7 @@
new BufferedWriter(new OutputStreamWriter(outputStream, encoding.newEncoder()));
try {
writer.write(string);
+ writer.flush();
} catch (IOException e) {
handler.error(new IOExceptionDiagnostic(e, origin));
}
diff --git a/src/test/java/com/android/tools/r8/R8CommandTest.java b/src/test/java/com/android/tools/r8/R8CommandTest.java
index c6ab4e2..2a613b4 100644
--- a/src/test/java/com/android/tools/r8/R8CommandTest.java
+++ b/src/test/java/com/android/tools/r8/R8CommandTest.java
@@ -361,6 +361,47 @@
.build());
}
+ private ProcessResult runR8OnShaking1(Path additionalProguardConfiguration) throws Throwable {
+ Path input = Paths.get(EXAMPLES_BUILD_DIR, "shaking1.jar").toAbsolutePath();
+ Path proguardConfiguration =
+ Paths.get(ToolHelper.EXAMPLES_DIR, "shaking1", "keep-rules.txt").toAbsolutePath();
+ return ToolHelper.forkR8(temp.getRoot().toPath(),
+ "--pg-conf", proguardConfiguration.toString(),
+ "--pg-conf", additionalProguardConfiguration.toString(),
+ "--lib", ToolHelper.getDefaultAndroidJar().toAbsolutePath().toString(),
+ input.toString());
+ }
+
+ @Test
+ public void printsPrintSeedsOnStdout() throws Throwable {
+ Path proguardPrintSeedsConfiguration = temp.newFile("printseeds.txt").toPath().toAbsolutePath();
+ FileUtils.writeTextFile(proguardPrintSeedsConfiguration, ImmutableList.of("-printseeds"));
+ ProcessResult result = runR8OnShaking1(proguardPrintSeedsConfiguration);
+ assertTrue(result.exitCode == 0);
+ assertTrue(result.stdout.contains("void main(java.lang.String[])"));
+ }
+
+ @Test
+ public void printsPrintUsageOnStdout() throws Throwable {
+ Path proguardPrintUsageConfiguration = temp.newFile("printusage.txt").toPath().toAbsolutePath();
+ FileUtils.writeTextFile(proguardPrintUsageConfiguration, ImmutableList.of("-printusage"));
+ ProcessResult result = runR8OnShaking1(proguardPrintUsageConfiguration);
+ assertTrue(result.exitCode == 0);
+ assertTrue(result.stdout.contains("shaking1.Unused"));
+ }
+
+ @Test
+ public void printsPrintSeedsAndPrintUsageOnStdout() throws Throwable {
+ Path proguardPrintSeedsConfiguration =
+ temp.newFile("printseedsandprintusage.txt").toPath().toAbsolutePath();
+ FileUtils.writeTextFile(
+ proguardPrintSeedsConfiguration, ImmutableList.of("-printseeds", "-printusage"));
+ ProcessResult result = runR8OnShaking1(proguardPrintSeedsConfiguration);
+ assertTrue(result.exitCode == 0);
+ assertTrue(result.stdout.contains("void main(java.lang.String[])"));
+ assertTrue(result.stdout.contains("shaking1.Unused"));
+ }
+
private R8Command parse(String... args) throws CompilationFailedException {
return R8Command.parse(args, EmbeddedOrigin.INSTANCE).build();
}