[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"
)
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("<applePluginTestVersion>", "\"${TestVersions.AppleGradlePlugin.V222_0_21}\"")
@@ -484,7 +485,7 @@ class AppleFrameworkIT : KGPBaseTest() {
}
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.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()
}
}
}
@@ -13,7 +13,7 @@ apple {
dependencies {
implementation(project(":iosLib")) {
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(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())
}
}
@@ -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(