From 8c2b2eb27816dcae23f284c02bd446a139f06a2c Mon Sep 17 00:00:00 2001 From: "konstantin.tskhovrebov" Date: Tue, 27 Sep 2022 12:16:18 +0200 Subject: [PATCH] Make 'KotlinNativeSimulatorTest.device' lazy property --- .../targets/native/KotlinNativeBinaryTestRun.kt | 4 ++-- .../native/KotlinNativeTargetConfigurator.kt | 8 ++++++-- .../targets/native/tasks/KotlinNativeTest.kt | 17 +++++++++++++---- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeBinaryTestRun.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeBinaryTestRun.kt index 360c98c5cef..326be51d51a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeBinaryTestRun.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeBinaryTestRun.kt @@ -75,8 +75,8 @@ open class DefaultSimulatorTestRun(testRunName: String, target: KotlinNativeTarg KotlinNativeSimulatorTestRun { override var deviceId: String - get() = executionTask.get().deviceId + get() = executionTask.flatMap { it.device }.get() set(value) { - executionTask.get().deviceId = value + executionTask.configure { it.device.set(value) } } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt index 62cfec0df4c..3ac603df288 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt @@ -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.kotlinTestRegistry 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.lowerCamelCaseName import org.jetbrains.kotlin.konan.target.HostManager @@ -669,8 +670,11 @@ class KotlinNativeTargetWithSimulatorTestsConfigurator : override fun configureTestTask(target: KotlinNativeTargetWithSimulatorTests, testTask: KotlinNativeSimulatorTest) { super.configureTestTask(target, testTask) - testTask.deviceId = Xcode.getDefaultTestDeviceId(target.konanTarget) - ?: error("Xcode does not support simulator tests for ${target.konanTarget.name}. Check that requested SDK is installed.") + val deviceIdProvider = testTask.project.provider { + 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( diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTest.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTest.kt index 76cfc9a0285..0d503649200 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTest.kt @@ -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.tasks.KotlinTest import org.jetbrains.kotlin.gradle.utils.isConfigurationCacheAvailable +import org.jetbrains.kotlin.gradle.utils.property import java.io.File import java.util.concurrent.Callable import javax.inject.Inject @@ -224,9 +225,17 @@ abstract class KotlinNativeHostTest : KotlinNativeTest() { * A task running Kotlin/Native tests on a simulator (iOS/watchOS/tvOS). */ abstract class KotlinNativeSimulatorTest : KotlinNativeTest() { - @Input - @Option(option = "device", description = "Sets a simulated device used to execute tests.") - lateinit var deviceId: String + @Deprecated("Use the property 'device' instead") + @get:Internal + 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 @Internal var debugMode = false @@ -248,7 +257,7 @@ abstract class KotlinNativeSimulatorTest : KotlinNativeTest() { "spawn", "--wait-for-debugger".takeIf { debugMode }, "--standalone", - deviceId, + device.get(), this@KotlinNativeSimulatorTest.executable.absolutePath, "--" ) +