From 950082e7f4a360ca7855ae18039a84d9eee54970 Mon Sep 17 00:00:00 2001 From: Pavel Punegov Date: Wed, 28 Dec 2022 20:09:24 +0100 Subject: [PATCH] [K/N][test] Improve XcodeSimulatorExecutor Make it be able to recognise incorrect installation when preferred runtimes are not set but present in the system. --- .../jetbrains/kotlin/executors/XcodeSimulatorExecutor.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/executors/XcodeSimulatorExecutor.kt b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/executors/XcodeSimulatorExecutor.kt index 9959aedc158..5620dfc7389 100644 --- a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/executors/XcodeSimulatorExecutor.kt +++ b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/executors/XcodeSimulatorExecutor.kt @@ -110,6 +110,14 @@ class XcodeSimulatorExecutor( val out = simctl("create", deviceType.name, deviceType.identifier, runtimeIdentifier) logger.info("Create device $deviceId: simctl output is: $out") + // Return freshly created device if it fits + deviceOrNull()?.let { return it } + + // Looks like device is unavailable. This may happen if + // `~/Library/Developer/CoreSimulator/RuntimeMap.plist` has empty preferred runtimes + logger.info("Runtimes are available but devices can't use it. Download runtimes again with Xcode") + downloadRuntimeFor(simulatorOsName(target.family)) + return checkNotNull(deviceOrNull()) { "Unable to get or create simulator device $deviceId for $target with runtime ${simulatorRuntime.name}" } }