diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/runner/TestRunners.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/runner/TestRunners.kt index e8b38a384c5..9a54a754c14 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/runner/TestRunners.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/runner/TestRunners.kt @@ -5,37 +5,16 @@ package org.jetbrains.kotlin.konan.test.blackbox.support.runner -import org.jetbrains.kotlin.konan.target.* -import org.jetbrains.kotlin.konan.test.blackbox.support.TestName -import org.jetbrains.kotlin.konan.test.blackbox.support.settings.* -import org.jetbrains.kotlin.native.executors.* -import org.jetbrains.kotlin.test.services.JUnit5Assertions.fail -import java.util.concurrent.ConcurrentHashMap +import org.jetbrains.kotlin.konan.test.blackbox.support.settings.ForcedNoopTestRunner +import org.jetbrains.kotlin.konan.test.blackbox.support.settings.Settings +import org.jetbrains.kotlin.konan.test.blackbox.support.settings.executor internal object TestRunners { fun createProperTestRunner(testRun: TestRun, settings: Settings): Runner = with(settings) { if (get().value) { NoopTestRunner - } else with(get()) { - val executor = executorCache.computeIfAbsent(testTarget) { - val configurables = configurables - when { - configurables.target == hostTarget -> HostExecutor() - configurables is ConfigurablesWithEmulator -> EmulatorExecutor(configurables) - configurables is AppleConfigurables && configurables.targetTriple.isSimulator -> - XcodeSimulatorExecutor(configurables) - configurables is AppleConfigurables && RosettaExecutor.availableFor(configurables) -> RosettaExecutor(configurables) - else -> runningOnUnsupportedTarget() - } - } - + } else { RunnerWithExecutor(executor, testRun) } } - - private val executorCache: ConcurrentHashMap = ConcurrentHashMap() - - private fun KotlinNativeTargets.runningOnUnsupportedTarget(): Nothing = fail { - "Running tests for $testTarget on $hostTarget is not supported yet." - } } diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/settings/SettingsExecutor.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/settings/SettingsExecutor.kt new file mode 100644 index 00000000000..a17b1b2fbc6 --- /dev/null +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/settings/SettingsExecutor.kt @@ -0,0 +1,31 @@ +/* + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.konan.test.blackbox.support.settings + +import org.jetbrains.kotlin.konan.target.AppleConfigurables +import org.jetbrains.kotlin.konan.target.ConfigurablesWithEmulator +import org.jetbrains.kotlin.konan.target.KonanTarget +import org.jetbrains.kotlin.konan.target.isSimulator +import org.jetbrains.kotlin.native.executors.* +import org.jetbrains.kotlin.test.services.JUnit5Assertions +import java.util.concurrent.ConcurrentHashMap + +private val executorCache: ConcurrentHashMap = ConcurrentHashMap() + +internal val Settings.executor: Executor + get() = with(get()) { + executorCache.computeIfAbsent(testTarget) { + val configurables = configurables + when { + configurables.target == hostTarget -> HostExecutor() + configurables is ConfigurablesWithEmulator -> EmulatorExecutor(configurables) + configurables is AppleConfigurables && configurables.targetTriple.isSimulator -> + XcodeSimulatorExecutor(configurables) + configurables is AppleConfigurables && RosettaExecutor.availableFor(configurables) -> RosettaExecutor(configurables) + else -> JUnit5Assertions.fail { "Running tests for $testTarget on $hostTarget is not supported yet." } + } + } + } \ No newline at end of file