For XCFramework with default name register 'nameless' task 'assembleXCFramework`
#KT-42667
This commit is contained in:
committed by
Space
parent
08c505f9ba
commit
a54e758189
+23
-6
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.native
|
||||
|
||||
import org.jetbrains.kotlin.gradle.BaseGradleIT
|
||||
import org.jetbrains.kotlin.gradle.GradleVersionRequired
|
||||
import org.jetbrains.kotlin.gradle.transformProjectWithPluginsDsl
|
||||
import org.jetbrains.kotlin.gradle.util.AGPVersion
|
||||
import org.jetbrains.kotlin.konan.target.HostManager
|
||||
import org.jetbrains.kotlin.test.util.KtTestUtil
|
||||
@@ -62,15 +63,15 @@ class XCFrameworkIT : BaseGradleIT() {
|
||||
@Test
|
||||
fun `assemble other XCFramework for ios targets`() {
|
||||
with(Project("appleXCFramework")) {
|
||||
build("assembleSharedXCFramework") {
|
||||
build("assembleXCFramework") {
|
||||
assertSuccessful()
|
||||
assertTasksExecuted(":shared:linkReleaseFrameworkIosArm64")
|
||||
assertTasksExecuted(":shared:linkReleaseFrameworkIosX64")
|
||||
assertTasksExecuted(":shared:assembleSharedReleaseXCFramework")
|
||||
assertTasksExecuted(":shared:assembleReleaseXCFramework")
|
||||
assertFileExists("/shared/build/XCFrameworks/release/shared.xcframework")
|
||||
assertTasksExecuted(":shared:linkDebugFrameworkIosArm64")
|
||||
assertTasksExecuted(":shared:linkDebugFrameworkIosX64")
|
||||
assertTasksExecuted(":shared:assembleSharedDebugXCFramework")
|
||||
assertTasksExecuted(":shared:assembleDebugXCFramework")
|
||||
assertFileExists("/shared/build/XCFrameworks/debug/shared.xcframework")
|
||||
}
|
||||
}
|
||||
@@ -82,11 +83,27 @@ class XCFrameworkIT : BaseGradleIT() {
|
||||
build("tasks") {
|
||||
assertSuccessful()
|
||||
assertTasksNotRegistered(
|
||||
":shared:assembleSharedDebugXCFramework",
|
||||
":shared:assembleSharedReleaseXCFramework",
|
||||
":shared:assembleSharedXCFramework"
|
||||
":shared:assembleDebugXCFramework",
|
||||
":shared:assembleReleaseXCFramework",
|
||||
":shared:assembleXCFramework"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `check configuration error if two XCFrameworks were registered with same name`() {
|
||||
with(transformProjectWithPluginsDsl("appleXCFramework")) {
|
||||
with(gradleBuildScript("shared")) {
|
||||
var text = readText()
|
||||
text = text.replace("XCFramework(\"sdk\")", "XCFramework()")
|
||||
writeText(text)
|
||||
}
|
||||
|
||||
build("tasks") {
|
||||
assertFailed()
|
||||
assertContains("Cannot add task 'assembleReleaseXCFramework' as a task with that name already exists.")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
-3
@@ -41,6 +41,7 @@ internal class XCFrameworkTaskHolder(
|
||||
) {
|
||||
companion object {
|
||||
fun create(project: Project, xcFrameworkName: String, buildType: NativeBuildType): XCFrameworkTaskHolder {
|
||||
require(xcFrameworkName.isNotBlank())
|
||||
|
||||
val parentTask = project.parentAssembleXCFrameworkTask(xcFrameworkName)
|
||||
val task = project.registerAssembleXCFrameworkTask(xcFrameworkName, buildType)
|
||||
@@ -89,8 +90,11 @@ class XCFrameworkConfig {
|
||||
|
||||
fun Project.XCFramework(xcFrameworkName: String = name) = XCFrameworkConfig(this, xcFrameworkName)
|
||||
|
||||
private fun Project.eraseIfDefault(xcFrameworkName: String) =
|
||||
if (name == xcFrameworkName) "" else xcFrameworkName
|
||||
|
||||
private fun Project.parentAssembleXCFrameworkTask(xcFrameworkName: String): TaskProvider<Task> =
|
||||
locateOrRegisterTask(lowerCamelCaseName("assemble", xcFrameworkName, "XCFramework")) {
|
||||
locateOrRegisterTask(lowerCamelCaseName("assemble", eraseIfDefault(xcFrameworkName), "XCFramework")) {
|
||||
it.group = "build"
|
||||
it.description = "Assemble all types of registered '$xcFrameworkName' XCFramework"
|
||||
}
|
||||
@@ -99,10 +103,9 @@ private fun Project.registerAssembleXCFrameworkTask(
|
||||
xcFrameworkName: String,
|
||||
buildType: NativeBuildType
|
||||
): TaskProvider<XCFrameworkTask> {
|
||||
require(xcFrameworkName.isNotBlank())
|
||||
val taskName = lowerCamelCaseName(
|
||||
"assemble",
|
||||
xcFrameworkName,
|
||||
eraseIfDefault(xcFrameworkName),
|
||||
buildType.getName(),
|
||||
"XCFramework"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user