Test varg variants of the command builders in API tests.
Change-Id: Ifffc262e20ca6affe8d85c3a58a144b712fdbc98
diff --git a/src/test/apiUsageSample/com/android/tools/apiusagesample/R8ApiUsageSample.java b/src/test/apiUsageSample/com/android/tools/apiusagesample/R8ApiUsageSample.java
index d069d05..7230f55 100644
--- a/src/test/apiUsageSample/com/android/tools/apiusagesample/R8ApiUsageSample.java
+++ b/src/test/apiUsageSample/com/android/tools/apiusagesample/R8ApiUsageSample.java
@@ -101,21 +101,22 @@
throw new RuntimeException("Must supply pg-conf inputs");
}
- useProgramFileBuilder(CompilationMode.DEBUG, minApiLevel, libraries, inputs);
- useProgramFileBuilder(CompilationMode.RELEASE, minApiLevel, libraries, inputs);
- useProgramDataBuilder(minApiLevel, libraries, inputs);
- useProgramProvider(minApiLevel, libraries, inputs);
- useLibraryProvider(minApiLevel, libraries, inputs);
+ useProgramFileList(CompilationMode.DEBUG, minApiLevel, libraries, inputs);
+ useProgramFileList(CompilationMode.RELEASE, minApiLevel, libraries, inputs);
+ useProgramData(minApiLevel, libraries, inputs);
+ useProgramResourceProvider(minApiLevel, libraries, inputs);
+ useLibraryResourceProvider(minApiLevel, libraries, inputs);
useMainDexListFiles(minApiLevel, libraries, inputs, mainDexList);
useMainDexClasses(minApiLevel, libraries, inputs, mainDexList);
useMainDexRulesFiles(minApiLevel, libraries, inputs, mainDexRules);
useMainDexRules(minApiLevel, libraries, inputs, mainDexRules);
useProguardConfigFiles(minApiLevel, libraries, inputs, mainDexList, pgConf);
useProguardConfigLines(minApiLevel, libraries, inputs, mainDexList, pgConf);
+ useVArgVariants(minApiLevel, libraries, inputs, mainDexList, mainDexRules, pgConf);
}
// Check API support for compiling Java class-files from the file system.
- private static void useProgramFileBuilder(
+ private static void useProgramFileList(
CompilationMode mode, int minApiLevel, Collection<Path> libraries, Collection<Path> inputs) {
try {
R8.run(
@@ -132,7 +133,7 @@
}
// Check API support for compiling Java class-files from byte content.
- private static void useProgramDataBuilder(
+ private static void useProgramData(
int minApiLevel, Collection<Path> libraries, Collection<Path> inputs) {
try {
R8Command.Builder builder =
@@ -152,7 +153,7 @@
}
// Check API support for compiling Java class-files from a program provider abstraction.
- private static void useProgramProvider(
+ private static void useProgramResourceProvider(
int minApiLevel, Collection<Path> libraries, Collection<Path> inputs) {
try {
R8Command.Builder builder =
@@ -181,7 +182,7 @@
}
}
- private static void useLibraryProvider(
+ private static void useLibraryResourceProvider(
int minApiLevel, Collection<Path> libraries, Collection<Path> inputs) {
try {
R8Command.Builder builder =
@@ -339,6 +340,35 @@
}
}
+ // Check API support for all the varg variants.
+ private static void useVArgVariants(
+ int minApiLevel,
+ List<Path> libraries,
+ List<Path> inputs,
+ List<Path> mainDexList,
+ List<Path> mainDexRules,
+ List<Path> pgConf) {
+ try {
+ R8.run(
+ R8Command.builder(handler)
+ .setMinApiLevel(minApiLevel)
+ .setProgramConsumer(new EnsureOutputConsumer())
+ .addLibraryFiles(libraries.get(0))
+ .addLibraryFiles(libraries.stream().skip(1).toArray(Path[]::new))
+ .addProgramFiles(inputs.get(0))
+ .addProgramFiles(inputs.stream().skip(1).toArray(Path[]::new))
+ .addMainDexListFiles(mainDexList.get(0))
+ .addMainDexListFiles(mainDexList.stream().skip(1).toArray(Path[]::new))
+ .addMainDexRulesFiles(mainDexRules.get(0))
+ .addMainDexRulesFiles(mainDexRules.stream().skip(1).toArray(Path[]::new))
+ .addProguardConfigurationFiles(pgConf.get(0))
+ .addProguardConfigurationFiles(pgConf.stream().skip(1).toArray(Path[]::new))
+ .build());
+ } catch (CompilationFailedException e) {
+ throw new RuntimeException("Unexpected compilation exceptions", e);
+ }
+ }
+
// Helpers for tests.
// Some of this reimplements stuff in R8 utils, but that is not public API and we should not
// rely on it.