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 {
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) }
}
}
@@ -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(
@@ -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<String>
@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,
"--"
) +