From 8c5f980c16e9b46add12c40e83c6bde3bb02d3ce Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Fri, 19 Nov 2021 13:56:06 +0100 Subject: [PATCH] [MPP] [Android] implement testKT49798AgpVersionAttrNotPublished This test covers ^KT-49798 by publishing an Android library and checking that 'AgpVersionAttr' is not mentioned in any .module files of those publications. --- .../AbstractKotlinAndroidGradleTests.kt | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt index cd2f19eb42b..0c93f3c9e56 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt @@ -513,6 +513,29 @@ open class KotlinAndroid71GradleIT : KotlinAndroid70GradleIT() { override val defaultGradleVersion: GradleVersionRequired get() = GradleVersionRequired.AtLeast("7.2") + + /** + * Starting from AGP version 7.1.0-alpha13, a new attribute com.android.build.api.attributes.AgpVersionAttr was added. + * This attribute is *not intended* to be published. + */ + @Test + fun testKT49798AgpVersionAttrNotPublished() = with(Project("new-mpp-android")) { + build("publish") { + val debugPublicationDirectory = projectDir.resolve("lib/build/repo/com/example/lib-androidlib-debug") + val releasePublicationDirectory = projectDir.resolve("lib/build/repo/com/example/lib-androidlib") + + listOf(debugPublicationDirectory, releasePublicationDirectory).forEach { publicationDirectory -> + assertTrue(publicationDirectory.exists(), "Missing publication directory: $publicationDirectory") + val moduleFiles = publicationDirectory.walkTopDown().filter { file -> file.extension == "module" }.toList() + assertTrue(moduleFiles.isNotEmpty(), "Missing .module file in $publicationDirectory") + assertTrue(moduleFiles.size <= 1, "Multiple .module files in $publicationDirectory: $moduleFiles") + + val moduleFile = moduleFiles.single() + val moduleFileText = moduleFile.readText() + assertTrue("AgpVersionAttr" !in moduleFileText, ".module file $moduleFile leaks AgpVersionAttr") + } + } + } } open class KotlinAndroid34GradleIT : KotlinAndroid3GradleIT() {