lib/run_loop/device.rb in run_loop-2.2.1 vs lib/run_loop/device.rb in run_loop-2.2.2

- old
+ new

@@ -108,12 +108,12 @@ merged_options = default_options.merge(options) instruments = merged_options[:instruments] simctl = merged_options[:simctl] + xcode = merged_options[:xcode] - xcode = RunLoop::Xcode.new simulator = simctl.simulators.detect do |sim| sim.instruments_identifier(xcode) == udid_or_name || sim.udid == udid_or_name end @@ -374,11 +374,14 @@ end # iOS 9 simulators have an additional boot screen. is_gte_ios9 = version >= RunLoop::Version.new('9.0') - # iOS 9 iPad simulators need additional time to stabilize, especially + # Xcode 8 simulators do not need to wait for log file + is_xcode8 = RunLoop::Xcode.new.version_gte_8? + + # iOS > 9 iPad simulators need additional time to stabilize, especially # to ensure that `simctl install` notifies SpringBoard that a new app # has been installed. is_ipad = simulator_is_ipad? timeout = SIM_STABLE_STATE_OPTIONS[:timeout] @@ -386,18 +389,27 @@ poll_until = now + timeout RunLoop.log_debug("Waiting for simulator to stabilize with timeout: #{timeout} seconds") current_dir_sha = simulator_data_directory_sha - current_log_sha = simulator_log_file_sha + if is_xcode8 + current_log_sha = true + else + current_log_sha = simulator_log_file_sha + end + is_stable = false waited_for_boot = false waited_for_ipad = false stable_count = 0 while Time.now < poll_until do latest_dir_sha = simulator_data_directory_sha - latest_log_sha = simulator_log_file_sha + if is_xcode8 + latest_log_sha = true + else + latest_log_sha = simulator_log_file_sha + end is_stable = [current_dir_sha == latest_dir_sha, current_log_sha == latest_log_sha].all? if is_stable