Add API test for new consumers.
Bug: 131572129
Change-Id: I0e29a3719929ba7b3ca71dfcb814ebd1624df99c
diff --git a/src/test/apiUsageSample/com/android/tools/apiusagesample/R8ApiUsageSample.java b/src/test/apiUsageSample/com/android/tools/apiusagesample/R8ApiUsageSample.java
index fc18db1..4c14226 100644
--- a/src/test/apiUsageSample/com/android/tools/apiusagesample/R8ApiUsageSample.java
+++ b/src/test/apiUsageSample/com/android/tools/apiusagesample/R8ApiUsageSample.java
@@ -15,6 +15,7 @@
import com.android.tools.r8.R8;
import com.android.tools.r8.R8Command;
import com.android.tools.r8.ResourceException;
+import com.android.tools.r8.StringConsumer;
import com.android.tools.r8.origin.ArchiveEntryOrigin;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.origin.PathOrigin;
@@ -114,6 +115,47 @@
useProguardConfigFiles(minApiLevel, libraries, inputs, mainDexList, pgConf);
useProguardConfigLines(minApiLevel, libraries, inputs, mainDexList, pgConf);
useVArgVariants(minApiLevel, libraries, inputs, mainDexList, mainDexRules, pgConf);
+ useProguardConfigConsumers(minApiLevel, libraries, inputs, pgConf);
+ }
+
+ private static class InMemoryStringConsumer implements StringConsumer {
+ public String value = null;
+
+ @Override
+ public void accept(String string, DiagnosticsHandler handler) {
+ value = string;
+ }
+ }
+
+ private static void useProguardConfigConsumers(
+ int minApiLevel, Collection<Path> libraries, Collection<Path> inputs, List<Path> pgConf) {
+ InMemoryStringConsumer usageConsumer = new InMemoryStringConsumer();
+ InMemoryStringConsumer seedsConsumer = new InMemoryStringConsumer();
+ InMemoryStringConsumer configConsumer = new InMemoryStringConsumer();
+ try {
+ R8.run(
+ R8Command.builder(handler)
+ .setMinApiLevel(minApiLevel)
+ .setProgramConsumer(new EnsureOutputConsumer())
+ .addLibraryFiles(libraries)
+ .addProgramFiles(inputs)
+ .addProguardConfigurationFiles(pgConf)
+ .setProguardUsageConsumer(usageConsumer)
+ .setProguardSeedsConsumer(seedsConsumer)
+ .setProguardConfigurationConsumer(configConsumer)
+ .build());
+ } catch (CompilationFailedException e) {
+ throw new RuntimeException("Unexpected compilation exception", e);
+ }
+ if (usageConsumer.value == null) {
+ throw new RuntimeException("Expected usage info but had none");
+ }
+ if (seedsConsumer.value == null) {
+ throw new RuntimeException("Expected seeds info but had none");
+ }
+ if (configConsumer.value == null) {
+ throw new RuntimeException("Expected config info but had none");
+ }
}
// Check API support for compiling Java class-files from the file system.