Make 'KotlinNativeSimulatorTest.device' lazy property

This commit is contained in:
konstantin.tskhovrebov
2022-09-27 12:16:18 +02:00
committed by Space Team
parent 10947e2c45
commit 8c2b2eb278
3 changed files with 21 additions and 8 deletions
@@ -75,8 +75,8 @@ open class DefaultSimulatorTestRun(testRunName: String, target: KotlinNativeTarg
KotlinNativeSimulatorTestRun { KotlinNativeSimulatorTestRun {
override var deviceId: String override var deviceId: String
get() = executionTask.get().deviceId get() = executionTask.flatMap { it.device }.get()
set(value) { set(value) {
executionTask.get().deviceId = value executionTask.configure { it.device.set(value) }
} }
} }
@@ -43,6 +43,7 @@ import org.jetbrains.kotlin.gradle.tasks.*
import org.jetbrains.kotlin.gradle.testing.internal.configureConventions import org.jetbrains.kotlin.gradle.testing.internal.configureConventions
import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry
import org.jetbrains.kotlin.gradle.testing.testTaskName import org.jetbrains.kotlin.gradle.testing.testTaskName
import org.jetbrains.kotlin.gradle.utils.*
import org.jetbrains.kotlin.gradle.utils.Xcode import org.jetbrains.kotlin.gradle.utils.Xcode
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.target.HostManager
@@ -669,8 +670,11 @@ class KotlinNativeTargetWithSimulatorTestsConfigurator :
override fun configureTestTask(target: KotlinNativeTargetWithSimulatorTests, testTask: KotlinNativeSimulatorTest) { override fun configureTestTask(target: KotlinNativeTargetWithSimulatorTests, testTask: KotlinNativeSimulatorTest) {
super.configureTestTask(target, testTask) super.configureTestTask(target, testTask)
testTask.deviceId = Xcode.getDefaultTestDeviceId(target.konanTarget) val deviceIdProvider = testTask.project.provider {
?: error("Xcode does not support simulator tests for ${target.konanTarget.name}. Check that requested SDK is installed.") Xcode.getDefaultTestDeviceId(target.konanTarget)
?: error("Xcode does not support simulator tests for ${target.konanTarget.name}. Check that requested SDK is installed.")
}
testTask.device.set(deviceIdProvider)
} }
override fun createTestRun( override fun createTestRun(
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.isAtLeast
import org.jetbrains.kotlin.gradle.targets.native.internal.parseKotlinNativeStackTraceAsJvm import org.jetbrains.kotlin.gradle.targets.native.internal.parseKotlinNativeStackTraceAsJvm
import org.jetbrains.kotlin.gradle.tasks.KotlinTest import org.jetbrains.kotlin.gradle.tasks.KotlinTest
import org.jetbrains.kotlin.gradle.utils.isConfigurationCacheAvailable import org.jetbrains.kotlin.gradle.utils.isConfigurationCacheAvailable
import org.jetbrains.kotlin.gradle.utils.property
import java.io.File import java.io.File
import java.util.concurrent.Callable import java.util.concurrent.Callable
import javax.inject.Inject import javax.inject.Inject
@@ -224,9 +225,17 @@ abstract class KotlinNativeHostTest : KotlinNativeTest() {
* A task running Kotlin/Native tests on a simulator (iOS/watchOS/tvOS). * A task running Kotlin/Native tests on a simulator (iOS/watchOS/tvOS).
*/ */
abstract class KotlinNativeSimulatorTest : KotlinNativeTest() { abstract class KotlinNativeSimulatorTest : KotlinNativeTest() {
@Input @Deprecated("Use the property 'device' instead")
@Option(option = "device", description = "Sets a simulated device used to execute tests.") @get:Internal
lateinit var deviceId: String var deviceId: String
get() = device.get()
set(value) {
device.set(value)
}
@get:Input
@get:Option(option = "device", description = "Sets a simulated device used to execute tests.")
abstract val device: Property<String>
@Internal @Internal
var debugMode = false var debugMode = false
@@ -248,7 +257,7 @@ abstract class KotlinNativeSimulatorTest : KotlinNativeTest() {
"spawn", "spawn",
"--wait-for-debugger".takeIf { debugMode }, "--wait-for-debugger".takeIf { debugMode },
"--standalone", "--standalone",
deviceId, device.get(),
this@KotlinNativeSimulatorTest.executable.absolutePath, this@KotlinNativeSimulatorTest.executable.absolutePath,
"--" "--"
) + ) +