From ddb27f2b2640d99581fb2fc3a8db9b8ad5883d62 Mon Sep 17 00:00:00 2001 From: Artem Daugel-Dauge Date: Thu, 29 Jun 2023 19:35:58 +0200 Subject: [PATCH] [Gradle] Use framework name instead of baseName as the attribute value ^KT-58316 Verification Pending --- .../kotlin/gradle/native/AppleFrameworkIT.kt | 17 +++++++------ .../kotlin/gradle/native/FatFrameworkIT.kt | 25 ++++++++++++++++++- .../iosApp/build.gradle.kts | 2 +- .../native/configureBinaryFrameworks.kt | 2 +- .../gradle/unitTests/FatFrameworksTest.kt | 4 +-- 5 files changed, 37 insertions(+), 13 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt index ae17e7939f3..f9f2a1e0aeb 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt @@ -460,13 +460,14 @@ class AppleFrameworkIT : KGPBaseTest() { ":iosApp:dependencyInsight", "--configuration", configuration, "--dependency", "iosLib" ) - fun BuildResult.assertContainsVariant(variantName: String) { - assertOutputContains( - if (gradleVersion >= GradleVersion.version(TestVersions.Gradle.G_7_5)) - "Variant $variantName" - else "variant \"$variantName\"" - ) - } + fun variant(variantName: String) = + if (gradleVersion >= GradleVersion.version(TestVersions.Gradle.G_7_5)) { + "Variant $variantName" + } else { + "variant \"$variantName\"" + } + + fun BuildResult.assertContainsVariant(variantName: String) = assertOutputContains(variant(variantName)) subProject("iosApp").buildGradleKts.replaceText("", "\"${TestVersions.AppleGradlePlugin.V222_0_21}\"") @@ -484,7 +485,7 @@ class AppleFrameworkIT : KGPBaseTest() { } build(*dependencyInsight("iosAppIosX64ReleaseImplementation0"), "-PmultipleFrameworks") { - assertContainsVariant("mainStaticReleaseFrameworkIos") + assertOutputDoesNotContain(variant("mainStaticReleaseFrameworkIos")) } } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/FatFrameworkIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/FatFrameworkIT.kt index ba69fad9f4b..cd7a3f8e46d 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/FatFrameworkIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/FatFrameworkIT.kt @@ -11,7 +11,6 @@ import org.jetbrains.kotlin.gradle.testbase.* import org.jetbrains.kotlin.gradle.util.* import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.condition.OS -import java.util.* import kotlin.io.path.absolutePathString import kotlin.io.path.appendText import kotlin.test.assertTrue @@ -227,4 +226,28 @@ class FatFrameworkIT : KGPBaseTest() { } } + @DisplayName("Test that the configurations exposing fat frameworks with the same baseName are resolved normally") + @GradleTestVersions(minVersion = TestVersions.Gradle.G_8_0, maxVersion = TestVersions.Gradle.G_8_1) + @GradleTest + fun testExposingFrameworksWithSameBaseName(gradleVersion: GradleVersion) { + nativeProject("native-fat-framework/smoke", gradleVersion) { + buildGradleKts.addKotlinBlock(""" + iosX64 { + binaries { + framework("A") { baseName = "smoke" } + framework("B") { baseName = "smoke" } + } + } + iosArm64 { + binaries { + framework("A") { baseName = "smoke" } + framework("B") { baseName = "smoke" } + } + } + """.trimIndent()) + + testResolveAllConfigurations() + } + } + } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/appleGradlePluginConsumesAppleFrameworks/iosApp/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/appleGradlePluginConsumesAppleFrameworks/iosApp/build.gradle.kts index af9dbbfaaaf..d58052cc404 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/appleGradlePluginConsumesAppleFrameworks/iosApp/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/appleGradlePluginConsumesAppleFrameworks/iosApp/build.gradle.kts @@ -13,7 +13,7 @@ apple { dependencies { implementation(project(":iosLib")) { if (properties.containsKey("multipleFrameworks")) { - attributes.attribute(KotlinNativeTarget.kotlinNativeFrameworkNameAttribute, "mainStatic") + attributes.attribute(KotlinNativeTarget.kotlinNativeFrameworkNameAttribute, "mainStaticDebugFramework") } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/configureBinaryFrameworks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/configureBinaryFrameworks.kt index 24c3e953382..e8f1cb13ff7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/configureBinaryFrameworks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/configureBinaryFrameworks.kt @@ -84,7 +84,7 @@ private fun Configuration.applyBinaryFrameworkGroupAttributes( attribute(KotlinPlatformType.attribute, KotlinPlatformType.native) attribute(project.artifactTypeAttribute, KotlinNativeTargetConfigurator.NativeArtifactFormat.FRAMEWORK) attribute(KotlinNativeTarget.kotlinNativeBuildTypeAttribute, frameworkDescription.buildType.name) - attribute(KotlinNativeTarget.kotlinNativeFrameworkNameAttribute, frameworkDescription.baseName) + attribute(KotlinNativeTarget.kotlinNativeFrameworkNameAttribute, frameworkDescription.frameworkName) attribute(Framework.frameworkTargets, targets.map { it.konanTarget.name }.toSet()) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/FatFrameworksTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/FatFrameworksTest.kt index 78748bcc2e5..1792c2afdeb 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/FatFrameworksTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/FatFrameworksTest.kt @@ -96,8 +96,8 @@ class FatFrameworksTest { project.evaluate() val barFat = project.assertConfigurationExists("barDebugFrameworkIosFat") val fooFat = project.assertConfigurationExists("fooDebugFrameworkIosFat") - assertEquals("f1", fooFat.attributes.getAttribute(KotlinNativeTarget.kotlinNativeFrameworkNameAttribute)) - assertEquals("f2", barFat.attributes.getAttribute(KotlinNativeTarget.kotlinNativeFrameworkNameAttribute)) + assertEquals("fooDebugFramework", fooFat.attributes.getAttribute(KotlinNativeTarget.kotlinNativeFrameworkNameAttribute)) + assertEquals("barDebugFramework", barFat.attributes.getAttribute(KotlinNativeTarget.kotlinNativeFrameworkNameAttribute)) } private fun testFatFrameworkGrouping(