Skip to content

Commit 1e6407b

Browse files
committed
Work around breaking binary change for PackagingOptions in AGP 8.x
1 parent a8eb60f commit 1e6407b

File tree

1 file changed

+15
-3
lines changed
  • plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/internal

1 file changed

+15
-3
lines changed

plugin/android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/internal/configureJUnit5.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import de.mannodermaus.gradle.plugins.junit5.dsl.AndroidJUnitPlatformExtension
1111
import de.mannodermaus.gradle.plugins.junit5.internal.config.ANDROID_JUNIT5_RUNNER_BUILDER_CLASS
1212
import de.mannodermaus.gradle.plugins.junit5.internal.config.JUnit5TaskConfig
1313
import de.mannodermaus.gradle.plugins.junit5.internal.config.PluginConfig
14+
import de.mannodermaus.gradle.plugins.junit5.internal.extensions.android
1415
import de.mannodermaus.gradle.plugins.junit5.internal.extensions.getAsList
1516
import de.mannodermaus.gradle.plugins.junit5.internal.extensions.getTaskName
1617
import de.mannodermaus.gradle.plugins.junit5.internal.extensions.junit5Warn
@@ -32,7 +33,7 @@ internal fun configureJUnit5(
3233

3334
config.finalizeDsl { android ->
3435
prepareBuildTypeDsl(android)
35-
prepareUnitTests(android)
36+
prepareUnitTests(project, android)
3637
prepareInstrumentationTests(project, android)
3738
}
3839

@@ -88,10 +89,21 @@ private fun AndroidJUnitPlatformExtension.prepareVariantDsl(variant: Variant) {
8889
}
8990
}
9091

91-
private fun AndroidJUnitPlatformExtension.prepareUnitTests(android: AndroidExtension) {
92+
private fun prepareUnitTests(project: Project, android: AndroidExtension) {
9293
// Add default ignore rules for JUnit 5 metadata files to the packaging options of the plugin,
9394
// so that consumers don't need to do this explicitly
94-
android.packagingOptions.resources.excludes.addAll(excludedPackagingOptions())
95+
val options = excludedPackagingOptions()
96+
97+
try {
98+
android.packagingOptions.resources.excludes.addAll(options)
99+
} catch (e: NoSuchMethodError) {
100+
// TODO Because of https://issuetracker.google.com/issues/263387063,
101+
// there is a breaking API change in AGP 8.x that causes a NoSuchMethodError
102+
// (renaming PackagingOptions to Packaging without any fallback).
103+
// Fall back to the old DSL when this happens
104+
@Suppress("DEPRECATION")
105+
options.forEach(project.android.packagingOptions::exclude)
106+
}
95107
}
96108

97109
private fun AndroidJUnitPlatformExtension.prepareInstrumentationTests(project: Project, android: AndroidExtension) {

0 commit comments

Comments
 (0)