Fix ProGuard test with androidx keep annotations
Ensure that kotlin-stdlib and JetBrains annotation libraries are
passed once to Kotlin tests using androidx keep annotations and
optimizing with ProGuard.
Bug: b/392865072
Change-Id: Idbfbc407c03a9e528bfa4384159897e89cad17d5
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepAnnoTestBuilder.java b/src/test/java/com/android/tools/r8/keepanno/KeepAnnoTestBuilder.java
index b4d42d9..282b101 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepAnnoTestBuilder.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepAnnoTestBuilder.java
@@ -626,7 +626,7 @@
private final ProguardTestBuilder builder;
private final List<Consumer<List<String>>> configConsumers = new ArrayList<>();
private final List<Consumer<List<String>>> extractedRulesConsumers = new ArrayList<>();
- private final List<String> extractedRules = new ArrayList();
+ private final List<String> extractedRules = new ArrayList<>();
public PGBuilder(
KeepAnnoParameters params,
@@ -638,11 +638,7 @@
builder =
TestBase.testForProguard(KeepAnnoTestUtils.PG_VERSION, temp)
.applyIf(
- keepAnnotationLibrary == ANDROIDX,
- b ->
- b.addDefaultRuntimeLibrary(parameters())
- .addLibraryFiles(
- kotlinc.getKotlinStdlibJar(), kotlinc.getKotlinAnnotationJar()))
+ keepAnnotationLibrary == ANDROIDX, b -> b.addDefaultRuntimeLibrary(parameters()))
.addProgramFiles(KeepAnnoTestUtils.getKeepAnnoLib(temp, keepAnnotationLibrary))
.setMinApi(parameters());
}
diff --git a/src/test/java/com/android/tools/r8/keepanno/androidx/AnnotationPatternAnyRetentionTest.java b/src/test/java/com/android/tools/r8/keepanno/androidx/AnnotationPatternAnyRetentionTest.java
index a9b13e0..d622b64 100644
--- a/src/test/java/com/android/tools/r8/keepanno/androidx/AnnotationPatternAnyRetentionTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/androidx/AnnotationPatternAnyRetentionTest.java
@@ -13,6 +13,7 @@
import androidx.annotation.keep.KeepTarget;
import androidx.annotation.keep.UsedByReflection;
import androidx.annotation.keep.UsesReflection;
+import com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion;
import com.android.tools.r8.keepanno.KeepAnnoParameters;
import com.android.tools.r8.keepanno.KeepAnnoTestBase;
import com.android.tools.r8.utils.StringUtils;
@@ -47,6 +48,12 @@
public void test() throws Exception {
testForKeepAnnoAndroidX(parameters)
.addProgramClasses(getInputClasses())
+ .applyIfPG(
+ b ->
+ b.addProgramFiles(
+ ImmutableList.of(
+ KotlinCompilerVersion.latest().getCompiler().getKotlinStdlibJar(),
+ KotlinCompilerVersion.latest().getCompiler().getKotlinAnnotationJar())))
.setExcludedOuterClass(getClass())
.run(TestClass.class)
.assertSuccessWithOutput(EXPECTED)
diff --git a/src/test/java/com/android/tools/r8/keepanno/androidx/AnnotationPatternClassRetentionTest.java b/src/test/java/com/android/tools/r8/keepanno/androidx/AnnotationPatternClassRetentionTest.java
index 869b1bc..3f72691 100644
--- a/src/test/java/com/android/tools/r8/keepanno/androidx/AnnotationPatternClassRetentionTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/androidx/AnnotationPatternClassRetentionTest.java
@@ -14,6 +14,7 @@
import androidx.annotation.keep.KeepTarget;
import androidx.annotation.keep.UsedByReflection;
import androidx.annotation.keep.UsesReflection;
+import com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion;
import com.android.tools.r8.keepanno.KeepAnnoParameters;
import com.android.tools.r8.keepanno.KeepAnnoTestBase;
import com.android.tools.r8.utils.StringUtils;
@@ -48,6 +49,12 @@
public void test() throws Exception {
testForKeepAnnoAndroidX(parameters)
.addProgramClasses(getInputClasses())
+ .applyIfPG(
+ b ->
+ b.addProgramFiles(
+ ImmutableList.of(
+ KotlinCompilerVersion.latest().getCompiler().getKotlinStdlibJar(),
+ KotlinCompilerVersion.latest().getCompiler().getKotlinAnnotationJar())))
.setExcludedOuterClass(getClass())
.run(TestClass.class)
.assertSuccessWithOutput(EXPECTED)