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 4efaadc622a..c7dc40ed712 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 @@ -17,26 +17,23 @@ internal object TestRunners { if (get().value) { NoopTestRunner } else with(get()) { - val configurables = configurables - - val executor = cached( + val executor = executorCache.computeIfAbsent(testTarget) { + val configurables = configurables when { - testTarget == hostTarget -> HostExecutor() + 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() } - ) + } + RunnerWithExecutor(executor, testRun) } } - private val runnersCache: ConcurrentHashMap = ConcurrentHashMap() - - private inline fun cached(executor: T): Executor = - runnersCache.computeIfAbsent(T::class.java.simpleName) { executor } + private val executorCache: ConcurrentHashMap = ConcurrentHashMap() // Currently, only local test name extractor is supported. fun extractTestNames(executable: TestExecutable, settings: Settings): Collection = with(settings) {