Title: [186743] branches/safari-600.1.4.17-branch/Tools

Diff

Modified: branches/safari-600.1.4.17-branch/Tools/ChangeLog (186742 => 186743)


--- branches/safari-600.1.4.17-branch/Tools/ChangeLog	2015-07-12 22:09:20 UTC (rev 186742)
+++ branches/safari-600.1.4.17-branch/Tools/ChangeLog	2015-07-13 01:39:28 UTC (rev 186743)
@@ -1,5 +1,64 @@
 2015-07-09  David Kilzer  <[email protected]>
 
+        Make run-webkit-tests work with iOS Simulator iOS 8.x branch
+
+        Merge r179788, r179793.
+
+    2015-02-07  David Kilzer  <[email protected]>
+
+        [iOS] run-webkit-tests fails due to simulator devices from previous SDK installs being marked as unavailable
+        <http://webkit.org/b/141365>
+
+        Reviewed by Daniel Bates.
+
+        * Scripts/webkitpy/xcode/simulator.py:
+        (Simulator): Add unavailable_version_re precompiled regex.
+        (Simulator._parse_devices): Check for unavailable versions and
+        ignore them if found when parsing the output of
+        `xcrun simctl list`.
+        * Scripts/webkitpy/xcode/simulator_unittest.py:
+        (test_unavailable_devices): Add test with output from
+        `xcrun simctl list` with unavailable runtimes that fails before
+        the fix.
+
+    2015-02-07  David Kilzer  <[email protected]>
+
+        [iOS] Make Simulator class testable
+        <http://webkit.org/b/141358>
+
+        Rubber-stamped by Darin Adler.
+
+        * Scripts/webkitpy/common/system/platforminfo.py:
+        (PlatformInfo.xcode_simctl_list): Move `xcrun simctl list`
+        command to here from Simulator.refresh() in xcode/simulator.py
+        so that the output of the command can be mocked.
+
+        * Scripts/webkitpy/common/system/platforminfo_mock.py:
+        (MockPlatformInfo.__init__): Set self.expected_xcode_simctl_list
+        to None.
+        (MockPlatformInfo.xcode_simctl_list): Add method that returns
+        self.expected_xcode_simctl_list expectation.
+
+        * Scripts/webkitpy/xcode/simulator.py: Add missing copyright
+        and license header.
+        (Simulator.__init__): Add optional 'host' parameter to make it
+        possible to pass in a mock object for testing.  Set self._host
+        to 'host' parameter or create Host() object.
+        (Simulator.refresh): Call new PlatformInfo.xcode_simctl_list()
+        method.
+
+        * Scripts/webkitpy/xcode/simulator_unittest.py: Add unit test
+        for current code.
+        (SimulatorTest):
+        (SimulatorTest.setUp):
+        (SimulatorTest._set_expected_xcrun_simctl_list):
+        (SimulatorTest.test_simulator_device_types):
+        (test_invalid_device_types_header):
+        (test_invalid_runtimes_header):
+        (test_invalid_devices_header):
+
+2015-07-09  David Kilzer  <[email protected]>
+
         <rdar://problem/21716549> Donner: Safari URL And _javascript_ Prompt Origin Spoof Vulnerability
 
         Merge r184151.

Modified: branches/safari-600.1.4.17-branch/Tools/Scripts/webkitpy/common/system/platforminfo.py (186742 => 186743)


--- branches/safari-600.1.4.17-branch/Tools/Scripts/webkitpy/common/system/platforminfo.py	2015-07-12 22:09:20 UTC (rev 186742)
+++ branches/safari-600.1.4.17-branch/Tools/Scripts/webkitpy/common/system/platforminfo.py	2015-07-13 01:39:28 UTC (rev 186743)
@@ -118,6 +118,12 @@
         except:
             return sys.maxint
 
+    def xcode_simctl_list(self):
+        if not self.is_mac():
+            return ()
+        output = self._executive.run_command(['xcrun', 'simctl', 'list'], return_stderr=False)
+        return (line for line in output.splitlines())
+
     def _determine_os_name(self, sys_platform):
         if sys_platform == 'darwin':
             return 'mac'

Modified: branches/safari-600.1.4.17-branch/Tools/Scripts/webkitpy/common/system/platforminfo_mock.py (186742 => 186743)


--- branches/safari-600.1.4.17-branch/Tools/Scripts/webkitpy/common/system/platforminfo_mock.py	2015-07-12 22:09:20 UTC (rev 186742)
+++ branches/safari-600.1.4.17-branch/Tools/Scripts/webkitpy/common/system/platforminfo_mock.py	2015-07-13 01:39:28 UTC (rev 186743)
@@ -31,6 +31,7 @@
     def __init__(self, os_name='mac', os_version='snowleopard'):
         self.os_name = os_name
         self.os_version = os_version
+        self.expected_xcode_simctl_list = None
 
     def is_mac(self):
         return self.os_name == 'mac'
@@ -55,3 +56,6 @@
 
     def terminal_width(self):
         return 80
+
+    def xcode_simctl_list(self):
+        return self.expected_xcode_simctl_list

Modified: branches/safari-600.1.4.17-branch/Tools/Scripts/webkitpy/xcode/simulator.py (186742 => 186743)


--- branches/safari-600.1.4.17-branch/Tools/Scripts/webkitpy/xcode/simulator.py	2015-07-12 22:09:20 UTC (rev 186742)
+++ branches/safari-600.1.4.17-branch/Tools/Scripts/webkitpy/xcode/simulator.py	2015-07-13 01:39:28 UTC (rev 186743)
@@ -1,3 +1,25 @@
+# Copyright (C) 2014, 2015 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1.  Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+# 2.  Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 import itertools
 import logging
 import os
@@ -5,6 +27,8 @@
 import subprocess
 import time
 
+from webkitpy.common.host import Host
+
 _log = logging.getLogger(__name__)
 
 """
@@ -218,12 +242,14 @@
     """
     device_type_re = re.compile('(?P<name>[^(]+)\((?P<identifier>[^)]+)\)')
     runtime_re = re.compile(
-        'iOS (?P<version>[0-9]+\.[0-9])(?P<internal> Internal)? \([0-9]+\.[0-9]+ - (?P<build_version>[^)]+)\) \((?P<identifier>[^)]+)\)( \((?P<availability>[^)]+)\))?')
+        'iOS (?P<version>[0-9]+\.[0-9])(?P<internal> Internal)? \([0-9]+(\.[0-9]+)+ - (?P<build_version>[^)]+)\) \((?P<identifier>[^)]+)\)( \((?P<availability>[^)]+)\))?')
+    unavailable_version_re = re.compile('-- Unavailable: (?P<identifier>[^ ]+) --')
     version_re = re.compile('-- iOS (?P<version>[0-9]+\.[0-9]+)(?P<internal> Internal)? --')
     devices_re = re.compile(
         '\s*(?P<name>[^(]+ )\((?P<udid>[^)]+)\) \((?P<state>[^)]+)\)( \((?P<availability>[^)]+)\))?')
 
-    def __init__(self):
+    def __init__(self, host=None):
+        self._host = host or Host()
         self.runtimes = []
         self.device_types = []
         self.refresh()
@@ -232,14 +258,7 @@
         """
         Refresh runtime and device type information from ``simctl list``.
         """
-        command = ['xcrun', 'simctl', 'list']
-        simctl_p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-        stdout, stderr = simctl_p.communicate()
-        if simctl_p.returncode != 0:
-            raise RuntimeError(
-                '{command} failed:\n{stdout}\n{stderr}'.format(command=' '.join(command), stdout=stdout, stderr=stderr))
-
-        lines = (line for line in stdout.splitlines())
+        lines = self._host.platform.xcode_simctl_list()
         device_types_header = next(lines)
         if device_types_header != '== Device Types ==':
             raise RuntimeError('Expected == Device Types == header but got: "{}"'.format(device_types_header))
@@ -300,15 +319,22 @@
                 current_runtime = self.runtime(version=version, is_internal_runtime=bool(version_match.group('internal')))
                 assert current_runtime
                 continue
+
+            unavailable_version_match = self.unavailable_version_re.match(line)
+            if unavailable_version_match:
+                current_runtime = None
+                continue
+
             device_match = self.devices_re.match(line)
             if not device_match:
                 raise RuntimeError('Expected an iOS Simulator device line, got "{}"'.format(line))
-            device = Device(name=device_match.group('name').rstrip(),
-                            udid=device_match.group('udid'),
-                            state=device_match.group('state'),
-                            available=device_match.group('availability') is None,
-                            runtime=current_runtime)
-            current_runtime.devices.append(device)
+            if current_runtime:
+                device = Device(name=device_match.group('name').rstrip(),
+                                udid=device_match.group('udid'),
+                                state=device_match.group('state'),
+                                available=device_match.group('availability') is None,
+                                runtime=current_runtime)
+                current_runtime.devices.append(device)
 
     def device_type(self, name=None, identifier=None):
         """

Added: branches/safari-600.1.4.17-branch/Tools/Scripts/webkitpy/xcode/simulator_unittest.py (0 => 186743)


--- branches/safari-600.1.4.17-branch/Tools/Scripts/webkitpy/xcode/simulator_unittest.py	                        (rev 0)
+++ branches/safari-600.1.4.17-branch/Tools/Scripts/webkitpy/xcode/simulator_unittest.py	2015-07-13 01:39:28 UTC (rev 186743)
@@ -0,0 +1,243 @@
+# Copyright (C) 2015 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1.  Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+# 2.  Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import unittest
+
+from webkitpy.common.host_mock import MockHost
+from webkitpy.xcode.simulator import Simulator
+
+
+class SimulatorTest(unittest.TestCase):
+
+    def setUp(self):
+        """ Set up method for SimulatorTest """
+        self._host = MockHost()
+
+    def _set_expected_xcrun_simctl_list(self, lines):
+        self._host.platform.expected_xcode_simctl_list = (line for line in lines.splitlines())
+
+    def test_simulator_device_types(self):
+        """ Tests that valid `xcrun simctl list` output is parsed as expected """
+        self._set_expected_xcrun_simctl_list('''== Device Types ==
+iPhone 4s (com.apple.CoreSimulator.SimDeviceType.iPhone-4s)
+iPhone 5 (com.apple.CoreSimulator.SimDeviceType.iPhone-5)
+iPhone 5s (com.apple.CoreSimulator.SimDeviceType.iPhone-5s)
+iPhone 6 Plus (com.apple.CoreSimulator.SimDeviceType.iPhone-6-Plus)
+iPhone 6 (com.apple.CoreSimulator.SimDeviceType.iPhone-6)
+iPad 2 (com.apple.CoreSimulator.SimDeviceType.iPad-2)
+iPad Retina (com.apple.CoreSimulator.SimDeviceType.iPad-Retina)
+iPad Air (com.apple.CoreSimulator.SimDeviceType.iPad-Air)
+== Runtimes ==
+iOS 8.0 (8.0 - 12A465) (com.apple.CoreSimulator.SimRuntime.iOS-8-0)
+iOS 8.0 Internal (8.0 - Unknown) (com.apple.CoreSimulator.SimRuntime.iOS-8-0-Internal) (unavailable, runtime path not found)
+== Devices ==
+-- iOS 8.0 --
+    iPhone 4s (68D9A792-E3A9-462B-B211-762C6A5D3779) (Shutdown)
+    iPhone 5 (1C3767FF-C268-4961-B6DA-F4F75E99EF5D) (Shutdown)
+    iPhone 5s (2A1CB363-9A09-4438-B9BE-9C42BD208F72) (Shutdown)
+    iPhone 5s WebKit Tester (79BA9206-E0B6-4D0E-B0E8-A88E2D45515D) (Booted)
+    iPhone 6 Plus (7F8039BE-D4A0-4245-9D56-AF94413FD6F5) (Shutdown)
+    iPhone 6 (7BF9F835-0CEA-4EE3-BD15-A62BD9F4B691) (Shutdown)
+    iPad 2 (2967C54F-A499-4043-A82C-8C1F5ADBB4A9) (Shutdown)
+    iPad Retina (733FC71E-22F4-4077-BF79-25C27EA881FC) (Shutdown)
+    iPad Air (67266841-82F3-4545-AED6-568B117E41A8) (Shutdown)
+-- iOS 8.0 Internal --
+''')
+        simulator = Simulator(host=self._host)
+        self.assertEqual(8, len(simulator.device_types))
+
+        device_type_iphone_4s = simulator.device_types[0]
+        self.assertEqual('iPhone 4s', device_type_iphone_4s.name)
+        self.assertEqual('com.apple.CoreSimulator.SimDeviceType.iPhone-4s', device_type_iphone_4s.identifier)
+
+        device_type_iphone_5 = simulator.device_types[1]
+        self.assertEqual('iPhone 5', device_type_iphone_5.name)
+        self.assertEqual('com.apple.CoreSimulator.SimDeviceType.iPhone-5', device_type_iphone_5.identifier)
+
+        device_type_iphone_5s = simulator.device_types[2]
+        self.assertEqual('iPhone 5s', device_type_iphone_5s.name)
+        self.assertEqual('com.apple.CoreSimulator.SimDeviceType.iPhone-5s', device_type_iphone_5s.identifier)
+
+        device_type_iphone_6_plus = simulator.device_types[3]
+        self.assertEqual('iPhone 6 Plus', device_type_iphone_6_plus.name)
+        self.assertEqual('com.apple.CoreSimulator.SimDeviceType.iPhone-6-Plus', device_type_iphone_6_plus.identifier)
+
+        device_type_iphone_6 = simulator.device_types[4]
+        self.assertEqual('iPhone 6', device_type_iphone_6.name)
+        self.assertEqual('com.apple.CoreSimulator.SimDeviceType.iPhone-6', device_type_iphone_6.identifier)
+
+        device_type_ipad_2 = simulator.device_types[5]
+        self.assertEqual('iPad 2', device_type_ipad_2.name)
+        self.assertEqual('com.apple.CoreSimulator.SimDeviceType.iPad-2', device_type_ipad_2.identifier)
+
+        device_type_ipad_retina = simulator.device_types[6]
+        self.assertEqual('iPad Retina', device_type_ipad_retina.name)
+        self.assertEqual('com.apple.CoreSimulator.SimDeviceType.iPad-Retina', device_type_ipad_retina.identifier)
+
+        device_type_ipad_air = simulator.device_types[7]
+        self.assertEqual('iPad Air', device_type_ipad_air.name)
+        self.assertEqual('com.apple.CoreSimulator.SimDeviceType.iPad-Air', device_type_ipad_air.identifier)
+
+        self.assertEqual(2, len(simulator.runtimes))
+
+        runtime_ios_8 = simulator.runtimes[0]
+        self.assertEqual('com.apple.CoreSimulator.SimRuntime.iOS-8-0', runtime_ios_8.identifier)
+        self.assertEqual(True, runtime_ios_8.available)
+        self.assertEqual(False, runtime_ios_8.is_internal_runtime)
+        self.assertEqual(tuple([8, 0]), runtime_ios_8.version)
+        self.assertEqual(9, len(runtime_ios_8.devices))
+
+        device_iphone_4s = runtime_ios_8.devices[0]
+        self.assertEqual('iPhone 4s', device_iphone_4s.name)
+        self.assertEqual('68D9A792-E3A9-462B-B211-762C6A5D3779', device_iphone_4s.udid)
+        self.assertEqual(True, device_iphone_4s.available)
+        self.assertEqual(runtime_ios_8, device_iphone_4s.runtime)
+
+        device_iphone_5 = runtime_ios_8.devices[1]
+        self.assertEqual('iPhone 5', device_iphone_5.name)
+        self.assertEqual('1C3767FF-C268-4961-B6DA-F4F75E99EF5D', device_iphone_5.udid)
+        self.assertEqual(True, device_iphone_5.available)
+        self.assertEqual(runtime_ios_8, device_iphone_5.runtime)
+
+        device_iphone_5s = runtime_ios_8.devices[2]
+        self.assertEqual('iPhone 5s', device_iphone_5s.name)
+        self.assertEqual('2A1CB363-9A09-4438-B9BE-9C42BD208F72', device_iphone_5s.udid)
+        self.assertEqual(True, device_iphone_5s.available)
+        self.assertEqual(runtime_ios_8, device_iphone_5s.runtime)
+
+        device_iphone_5s_webkit_tester = runtime_ios_8.devices[3]
+        self.assertEqual('iPhone 5s WebKit Tester', device_iphone_5s_webkit_tester.name)
+        self.assertEqual('79BA9206-E0B6-4D0E-B0E8-A88E2D45515D', device_iphone_5s_webkit_tester.udid)
+        self.assertEqual(True, device_iphone_5s_webkit_tester.available)
+        self.assertEqual(runtime_ios_8, device_iphone_5s_webkit_tester.runtime)
+
+        device_iphone_6_plus = runtime_ios_8.devices[4]
+        self.assertEqual('iPhone 6 Plus', device_iphone_6_plus.name)
+        self.assertEqual('7F8039BE-D4A0-4245-9D56-AF94413FD6F5', device_iphone_6_plus.udid)
+        self.assertEqual(True, device_iphone_6_plus.available)
+        self.assertEqual(runtime_ios_8, device_iphone_6_plus.runtime)
+
+        device_iphone_6 = runtime_ios_8.devices[5]
+        self.assertEqual('iPhone 6', device_iphone_6.name)
+        self.assertEqual('7BF9F835-0CEA-4EE3-BD15-A62BD9F4B691', device_iphone_6.udid)
+        self.assertEqual(True, device_iphone_6.available)
+        self.assertEqual(runtime_ios_8, device_iphone_6.runtime)
+
+        device_ipad_2 = runtime_ios_8.devices[6]
+        self.assertEqual('iPad 2', device_ipad_2.name)
+        self.assertEqual('2967C54F-A499-4043-A82C-8C1F5ADBB4A9', device_ipad_2.udid)
+        self.assertEqual(True, device_ipad_2.available)
+        self.assertEqual(runtime_ios_8, device_ipad_2.runtime)
+
+        device_ipad_retina = runtime_ios_8.devices[7]
+        self.assertEqual('iPad Retina', device_ipad_retina.name)
+        self.assertEqual('733FC71E-22F4-4077-BF79-25C27EA881FC', device_ipad_retina.udid)
+        self.assertEqual(True, device_ipad_retina.available)
+        self.assertEqual(runtime_ios_8, device_ipad_retina.runtime)
+
+        device_ipad_air = runtime_ios_8.devices[8]
+        self.assertEqual('iPad Air', device_ipad_air.name)
+        self.assertEqual('67266841-82F3-4545-AED6-568B117E41A8', device_ipad_air.udid)
+        self.assertEqual(True, device_ipad_air.available)
+        self.assertEqual(runtime_ios_8, device_ipad_air.runtime)
+
+        runtime_ios_8_internal = simulator.runtimes[1]
+        self.assertEqual('com.apple.CoreSimulator.SimRuntime.iOS-8-0-Internal', runtime_ios_8_internal.identifier)
+        self.assertEqual(False, runtime_ios_8_internal.available)
+        self.assertEqual(True, runtime_ios_8_internal.is_internal_runtime)
+        self.assertEqual(tuple([8, 0]), runtime_ios_8_internal.version)
+        self.assertEqual(0, len(runtime_ios_8_internal.devices))
+
+    def test_invalid_device_types_header(self):
+        """ Tests that an invalid Device Types header throws an exception """
+        self._set_expected_xcrun_simctl_list('''XX Device Types XX
+''')
+        with self.assertRaises(RuntimeError) as cm:
+            Simulator(host=self._host)
+        self.assertEqual('Expected == Device Types == header but got: "XX Device Types XX"', cm.exception.message)
+
+    def test_invalid_runtimes_header(self):
+        """ Tests that an invalid Runtimes header throws an exception """
+        self._set_expected_xcrun_simctl_list('''== Device Types ==
+iPhone 4s (com.apple.CoreSimulator.SimDeviceType.iPhone-4s)
+XX Runtimes XX
+''')
+        with self.assertRaises(RuntimeError) as cm:
+            Simulator(host=self._host)
+        self.assertEqual('Expected == Runtimes == header but got: "XX Runtimes XX"', cm.exception.message)
+
+    def test_invalid_devices_header(self):
+        """ Tests that an invalid Devices header throws an exception """
+        self._set_expected_xcrun_simctl_list('''== Device Types ==
+iPhone 4s (com.apple.CoreSimulator.SimDeviceType.iPhone-4s)
+== Runtimes ==
+iOS 8.0 (8.0 - 12A465) (com.apple.CoreSimulator.SimRuntime.iOS-8-0)
+XX Devices XX
+''')
+        with self.assertRaises(RuntimeError) as cm:
+            Simulator(host=self._host)
+        self.assertEqual('Expected == Devices == header but got: "XX Devices XX"', cm.exception.message)
+
+    def test_unavailable_devices(self):
+        """ Tests that unavailable devices are ignored """
+        self._set_expected_xcrun_simctl_list('''== Device Types ==
+iPhone 4s (com.apple.CoreSimulator.SimDeviceType.iPhone-4s)
+== Runtimes ==
+iOS 8.0 (8.0 - 12A465) (com.apple.CoreSimulator.SimRuntime.iOS-8-0)
+iOS 8.0 Internal (8.0 - Unknown) (com.apple.CoreSimulator.SimRuntime.iOS-8-0-Internal) (unavailable, runtime path not found)
+== Devices ==
+-- iOS 8.0 --
+    iPhone 4s (271BBEAC-1826-4CE1-B3AF-83F35CDD1D82) (Shutdown)
+-- iOS 8.0 Internal --
+-- Unavailable: com.apple.CoreSimulator.SimRuntime.iOS-8-1 --
+    iPhone 4s (08C0542B-65F7-46E8-B203-CB4055207BC8) (Shutdown) (unavailable, runtime profile not found)
+-- Unavailable: com.apple.CoreSimulator.SimRuntime.iOS-8-2 --
+    iPhone 4s (A36F7432-0AF5-49C4-A261-C44383992597) (Shutdown) (unavailable, runtime profile not found)
+''')
+        simulator = Simulator(host=self._host)
+        self.assertEqual(1, len(simulator.device_types))
+
+        device_type_iphone_4s = simulator.device_types[0]
+        self.assertEqual('iPhone 4s', device_type_iphone_4s.name)
+        self.assertEqual('com.apple.CoreSimulator.SimDeviceType.iPhone-4s', device_type_iphone_4s.identifier)
+
+        self.assertEqual(2, len(simulator.runtimes))
+
+        runtime_ios_8 = simulator.runtimes[0]
+        self.assertEqual('com.apple.CoreSimulator.SimRuntime.iOS-8-0', runtime_ios_8.identifier)
+        self.assertEqual(True, runtime_ios_8.available)
+        self.assertEqual(False, runtime_ios_8.is_internal_runtime)
+        self.assertEqual(tuple([8, 0]), runtime_ios_8.version)
+        self.assertEqual(1, len(runtime_ios_8.devices))
+
+        device_iphone_4s = runtime_ios_8.devices[0]
+        self.assertEqual('iPhone 4s', device_iphone_4s.name)
+        self.assertEqual('271BBEAC-1826-4CE1-B3AF-83F35CDD1D82', device_iphone_4s.udid)
+        self.assertEqual(True, device_iphone_4s.available)
+        self.assertEqual(runtime_ios_8, device_iphone_4s.runtime)
+
+        runtime_ios_8_internal = simulator.runtimes[1]
+        self.assertEqual('com.apple.CoreSimulator.SimRuntime.iOS-8-0-Internal', runtime_ios_8_internal.identifier)
+        self.assertEqual(False, runtime_ios_8_internal.available)
+        self.assertEqual(True, runtime_ios_8_internal.is_internal_runtime)
+        self.assertEqual(tuple([8, 0]), runtime_ios_8_internal.version)
+        self.assertEqual(0, len(runtime_ios_8_internal.devices))
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to