REGRESSION (r180239): run-webkit-test fails to boot simulator device that was booted...
authordbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 20 Feb 2015 02:36:30 +0000 (02:36 +0000)
committerdbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 20 Feb 2015 02:36:30 +0000 (02:36 +0000)
https://bugs.webkit.org/show_bug.cgi?id=141815
<rdar://problem/19893933>

Reviewed by Simon Fraser.

Fixes an issue where run-webkit-tests would fail to boot the WebKit Tester simulator device if it
was booted by iOS Simulator in a previous run of run-webkit-test.

* Scripts/webkitpy/port/ios.py:
(IOSSimulatorPort.check_sys_deps): Added logic moved from IOSSimulatorPort.setup_test_run().
(IOSSimulatorPort.setup_test_run): Moved logic to quit the iOS Simulator app and wait for the
testing device to be in the shutdown state from here to IOSSimulatorPort.check_sys_deps().

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@180378 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/Scripts/webkitpy/port/ios.py

index 0e14c9b..143a640 100644 (file)
@@ -1,3 +1,19 @@
+2015-02-19  Daniel Bates  <dabates@apple.com>
+
+        REGRESSION (r180239): run-webkit-test fails to boot simulator device that was booted by previous test run
+        https://bugs.webkit.org/show_bug.cgi?id=141815
+        <rdar://problem/19893933>
+
+        Reviewed by Simon Fraser.
+
+        Fixes an issue where run-webkit-tests would fail to boot the WebKit Tester simulator device if it
+        was booted by iOS Simulator in a previous run of run-webkit-test.
+
+        * Scripts/webkitpy/port/ios.py:
+        (IOSSimulatorPort.check_sys_deps): Added logic moved from IOSSimulatorPort.setup_test_run().
+        (IOSSimulatorPort.setup_test_run): Moved logic to quit the iOS Simulator app and wait for the
+        testing device to be in the shutdown state from here to IOSSimulatorPort.check_sys_deps().
+
 2015-02-19  David Kilzer  <ddkilzer@apple.com>
 
         check-webkit-style: do not warn about missing primary header for *SoftLink.cpp files
index d13a2be..e690f3a 100644 (file)
@@ -202,9 +202,7 @@ class IOSSimulatorPort(Port):
         return list(reversed([self._filesystem.join(self._webkit_baseline_path(p), 'TestExpectations') for p in self.baseline_search_path()]))
 
     def setup_test_run(self):
-        self._executive.run_command(['osascript', '-e', 'tell application "iOS Simulator" to quit'])
         device_udid = self.testing_device.udid
-        Simulator.wait_until_device_is_in_state(device_udid, Simulator.DeviceState.SHUTDOWN)
         self._executive.run_command([
             'open', '-a', os.path.join(self.developer_dir, 'Applications', 'iOS Simulator.app'),
             '--args', '-CurrentDeviceUDID', device_udid])
@@ -240,6 +238,13 @@ class IOSSimulatorPort(Port):
             _log.error('The iOS Simulator runtime with identifier "{0}" cannot be used because it is unavailable.'.format(self.simulator_runtime.identifier))
             return False
         testing_device = self.testing_device  # May create a new simulator device
+
+        # testing_device will fail to boot if it is already booted. We assume that if testing_device
+        # is booted that it was booted by the iOS Simulator app (as opposed to simctl). So, quit the
+        # iOS Simulator app to shutdown testing_device.
+        self._executive.run_command(['osascript', '-e', 'tell application "iOS Simulator" to quit'])
+        Simulator.wait_until_device_is_in_state(testing_device.udid, Simulator.DeviceState.SHUTDOWN)
+
         if not Simulator.check_simulator_device_and_erase_if_needed(self.host, testing_device.udid):
             _log.error('Unable to boot the simulator device with UDID {0}.'.format(testing_device.udid))
             return False