diff --git a/msbuild/Xamarin.MacDev.Tasks/Tasks/GetAvailableDevices.cs b/msbuild/Xamarin.MacDev.Tasks/Tasks/GetAvailableDevices.cs index 7b26fc4fb179..eda5380ab2d9 100644 --- a/msbuild/Xamarin.MacDev.Tasks/Tasks/GetAvailableDevices.cs +++ b/msbuild/Xamarin.MacDev.Tasks/Tasks/GetAvailableDevices.cs @@ -180,6 +180,7 @@ async System.Threading.Tasks.Task> RunDeviceCtlAsync () foreach (var device in array) { var name = device.GetStringPropertyOrEmpty ("deviceProperties", "name"); var udid = device.GetStringPropertyOrEmpty ("hardwareProperties", "udid"); + var identifier = device.GetStringPropertyOrEmpty ("identifier"); var deviceProperties = device.GetNullableProperty ("deviceProperties"); var buildVersion = deviceProperties.GetStringPropertyOrEmpty ("osBuildUpdate"); @@ -200,6 +201,12 @@ async System.Threading.Tasks.Task> RunDeviceCtlAsync () var transportType = connectionProperties.GetStringPropertyOrEmpty ("transportType"); var pairingState = connectionProperties.GetStringPropertyOrEmpty ("pairingState"); + if (string.IsNullOrEmpty (udid)) + udid = identifier; + + if (string.IsNullOrEmpty (udid)) + udid = $""; + var item = new TaskItem (udid); item.SetMetadata ("Name", name); item.SetMetadata ("BuildVersion", buildVersion); diff --git a/tests/msbuild/Xamarin.MacDev.Tasks.Tests/TaskTests/GetAvailableDevicesTest.cs b/tests/msbuild/Xamarin.MacDev.Tasks.Tests/TaskTests/GetAvailableDevicesTest.cs index afe4da191c1a..beb8be0f356d 100644 --- a/tests/msbuild/Xamarin.MacDev.Tasks.Tests/TaskTests/GetAvailableDevicesTest.cs +++ b/tests/msbuild/Xamarin.MacDev.Tasks.Tests/TaskTests/GetAvailableDevicesTest.cs @@ -679,6 +679,23 @@ public void Ctl1_AppleTV () }); } + [Test] + public void DeviceCtl2_Mac () + { + var platform = ApplePlatform.iOS; + var task = CreateTask (platform, "", DEVICECTL_JSON_2); + Assert.IsTrue (task.Execute (), "Task should have succeeded."); + + Assert.Multiple (() => { + Assert.That (task.DiscardedDevices [0].ItemSpec, Is.EqualTo ("12345678-1234-1234-ABCD-1234567980AB"), "Discarded Device 1 itemspec mismatch."); + Assert.That (task.DiscardedDevices [0].GetMetadata ("Description"), Is.EqualTo (""), "Discarded Device 1 Name mismatch."); + Assert.That (task.DiscardedDevices [0].GetMetadata ("OSVersion"), Is.EqualTo (""), "Discarded Device 1 OSVersion mismatch."); + Assert.That (task.DiscardedDevices [0].GetMetadata ("UDID"), Is.EqualTo ("12345678-1234-1234-ABCD-1234567980AB"), "Discarded Device 1 UDID mismatch."); + Assert.That (task.DiscardedDevices [0].GetMetadata ("RuntimeIdentifier"), Is.EqualTo (""), "Discarded Device 1 RuntimeIdentifier mismatch."); + Assert.That (task.DiscardedDevices [0].GetMetadata ("DiscardedReason"), Is.EqualTo ("'mac' devices are not supported"), "Discarded Device 1 reason mismatch."); + }); + } + const string DEVICECTL_JSON_1 = """ { @@ -897,6 +914,40 @@ public void Ctl1_AppleTV () } """; + const string DEVICECTL_JSON_2 = + """ + { + "result" : { + "devices" : [ + { + "connectionProperties" : { + "isMobileDeviceOnly" : false, + "pairingState" : "unsupported", + "potentialHostnames" : [ + "12345678-1234-1234-ABCD-1234567980AB.coredevice.local" + ], + "tunnelState" : "unavailable" + }, + "deviceProperties" : { + "bootState" : "booted", + "ddiServicesAvailable" : false, + "providerSpecificValues" : { + "hasAMRestorableDeviceRef" : "true" + } + }, + "hardwareProperties" : { + "deviceType" : "mac", + "platform" : "macOS", + "productType" : "MacBookPro17,1" + }, + "identifier" : "12345678-1234-1234-ABCD-1234567980AB", + "visibilityClass" : "default" + } + ] + } + } + """; + const string SIMCTL_JSON_1 = """ {