[Gradle] Use framework name instead of baseName as the attribute value

^KT-58316 Verification Pending
This commit is contained in:
Artem Daugel-Dauge
2023-06-29 19:35:58 +02:00
committed by Space Team
parent a1385103bf
commit ddb27f2b26
5 changed files with 37 additions and 13 deletions
@@ -460,13 +460,14 @@ class AppleFrameworkIT : KGPBaseTest() {
":iosApp:dependencyInsight", "--configuration", configuration, "--dependency", "iosLib" ":iosApp:dependencyInsight", "--configuration", configuration, "--dependency", "iosLib"
) )
fun BuildResult.assertContainsVariant(variantName: String) { fun variant(variantName: String) =
assertOutputContains( if (gradleVersion >= GradleVersion.version(TestVersions.Gradle.G_7_5)) {
if (gradleVersion >= GradleVersion.version(TestVersions.Gradle.G_7_5)) "Variant $variantName"
"Variant $variantName" } else {
else "variant \"$variantName\"" "variant \"$variantName\""
) }
}
fun BuildResult.assertContainsVariant(variantName: String) = assertOutputContains(variant(variantName))
subProject("iosApp").buildGradleKts.replaceText("<applePluginTestVersion>", "\"${TestVersions.AppleGradlePlugin.V222_0_21}\"") subProject("iosApp").buildGradleKts.replaceText("<applePluginTestVersion>", "\"${TestVersions.AppleGradlePlugin.V222_0_21}\"")
@@ -484,7 +485,7 @@ class AppleFrameworkIT : KGPBaseTest() {
} }
build(*dependencyInsight("iosAppIosX64ReleaseImplementation0"), "-PmultipleFrameworks") { build(*dependencyInsight("iosAppIosX64ReleaseImplementation0"), "-PmultipleFrameworks") {
assertContainsVariant("mainStaticReleaseFrameworkIos") assertOutputDoesNotContain(variant("mainStaticReleaseFrameworkIos"))
} }
} }
} }
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.gradle.testbase.*
import org.jetbrains.kotlin.gradle.util.* import org.jetbrains.kotlin.gradle.util.*
import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.condition.OS import org.junit.jupiter.api.condition.OS
import java.util.*
import kotlin.io.path.absolutePathString import kotlin.io.path.absolutePathString
import kotlin.io.path.appendText import kotlin.io.path.appendText
import kotlin.test.assertTrue 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()
}
}
} }
@@ -13,7 +13,7 @@ apple {
dependencies { dependencies {
implementation(project(":iosLib")) { implementation(project(":iosLib")) {
if (properties.containsKey("multipleFrameworks")) { if (properties.containsKey("multipleFrameworks")) {
attributes.attribute(KotlinNativeTarget.kotlinNativeFrameworkNameAttribute, "mainStatic") attributes.attribute(KotlinNativeTarget.kotlinNativeFrameworkNameAttribute, "mainStaticDebugFramework")
} }
} }
} }
@@ -84,7 +84,7 @@ private fun Configuration.applyBinaryFrameworkGroupAttributes(
attribute(KotlinPlatformType.attribute, KotlinPlatformType.native) attribute(KotlinPlatformType.attribute, KotlinPlatformType.native)
attribute(project.artifactTypeAttribute, KotlinNativeTargetConfigurator.NativeArtifactFormat.FRAMEWORK) attribute(project.artifactTypeAttribute, KotlinNativeTargetConfigurator.NativeArtifactFormat.FRAMEWORK)
attribute(KotlinNativeTarget.kotlinNativeBuildTypeAttribute, frameworkDescription.buildType.name) 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()) attribute(Framework.frameworkTargets, targets.map { it.konanTarget.name }.toSet())
} }
} }
@@ -96,8 +96,8 @@ class FatFrameworksTest {
project.evaluate() project.evaluate()
val barFat = project.assertConfigurationExists("barDebugFrameworkIosFat") val barFat = project.assertConfigurationExists("barDebugFrameworkIosFat")
val fooFat = project.assertConfigurationExists("fooDebugFrameworkIosFat") val fooFat = project.assertConfigurationExists("fooDebugFrameworkIosFat")
assertEquals("f1", fooFat.attributes.getAttribute(KotlinNativeTarget.kotlinNativeFrameworkNameAttribute)) assertEquals("fooDebugFramework", fooFat.attributes.getAttribute(KotlinNativeTarget.kotlinNativeFrameworkNameAttribute))
assertEquals("f2", barFat.attributes.getAttribute(KotlinNativeTarget.kotlinNativeFrameworkNameAttribute)) assertEquals("barDebugFramework", barFat.attributes.getAttribute(KotlinNativeTarget.kotlinNativeFrameworkNameAttribute))
} }
private fun testFatFrameworkGrouping( private fun testFatFrameworkGrouping(