Class: Snapshot::SimulatorLauncherBase
- Inherits:
-
Object
- Object
- Snapshot::SimulatorLauncherBase
- Defined in:
- snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#collected_errors ⇒ Object
Returns the value of attribute collected_errors.
-
#current_number_of_retries_due_to_failing_simulator ⇒ Object
The number of times we failed on launching the simulator…
-
#launcher_config ⇒ Object
Returns the value of attribute launcher_config.
Instance Method Summary collapse
-
#add_media(device_types, media_type, paths) ⇒ Object
pass an array of device types.
- #copy_simulator_logs(device_names, language, locale, launch_arguments) ⇒ Object
- #erase_simulator(device_type) ⇒ Object
-
#initialize(launcher_configuration: nil) ⇒ SimulatorLauncherBase
constructor
A new instance of SimulatorLauncherBase.
- #localize_simulator(device_type, language, locale) ⇒ Object
- #prepare_for_launch(device_types, language, locale, launch_arguments) ⇒ Object
- #prepare_simulators_for_launch(device_types, language: nil, locale: nil) ⇒ Object
- #uninstall_app(device_type) ⇒ Object
Constructor Details
#initialize(launcher_configuration: nil) ⇒ SimulatorLauncherBase
Returns a new instance of SimulatorLauncherBase.
17 18 19 |
# File 'snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb', line 17 def initialize(launcher_configuration: nil) @launcher_config = launcher_configuration end |
Instance Attribute Details
#collected_errors ⇒ Object
Returns the value of attribute collected_errors.
11 12 13 |
# File 'snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb', line 11 def collected_errors @collected_errors end |
#current_number_of_retries_due_to_failing_simulator ⇒ Object
The number of times we failed on launching the simulator… sigh
14 15 16 |
# File 'snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb', line 14 def current_number_of_retries_due_to_failing_simulator @current_number_of_retries_due_to_failing_simulator end |
#launcher_config ⇒ Object
Returns the value of attribute launcher_config.
15 16 17 |
# File 'snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb', line 15 def launcher_config @launcher_config end |
Instance Method Details
#add_media(device_types, media_type, paths) ⇒ Object
pass an array of device types
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb', line 68 def add_media(device_types, media_type, paths) media_type = media_type.to_s device_types.each do |device_type| UI.verbose("Adding #{media_type}s to #{device_type}...") device_udid = TestCommandGenerator.device_udid(device_type) UI.("Launch Simulator #{device_type}") Helper.backticks("xcrun instruments -w #{device_udid} &> /dev/null") paths.each do |path| UI.("Adding '#{path}'") Helper.backticks("xcrun simctl add#{media_type} #{device_udid} #{path.shellescape} &> /dev/null") end end end |
#copy_simulator_logs(device_names, language, locale, launch_arguments) ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb', line 120 def copy_simulator_logs(device_names, language, locale, launch_arguments) return unless launcher_config.output_simulator_logs detected_language = locale || language language_folder = File.join(launcher_config.output_directory, detected_language) device_names.each do |device_name| device = TestCommandGeneratorBase.find_device(device_name) components = [launch_arguments].delete_if { |a| a.to_s.length == 0 } UI.header("Collecting system logs #{device_name} - #{language}") log_identity = Digest::MD5.hexdigest(components.join("-")) FastlaneCore::Simulator.copy_logs(device, log_identity, language_folder) end end |
#erase_simulator(device_type) ⇒ Object
97 98 99 100 101 102 103 104 |
# File 'snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb', line 97 def erase_simulator(device_type) UI.verbose("Erasing #{device_type}...") device_udid = TestCommandGenerator.device_udid(device_type) UI.important("Erasing #{device_type}...") `xcrun simctl erase #{device_udid} &> /dev/null` end |
#localize_simulator(device_type, language, locale) ⇒ Object
106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb', line 106 def localize_simulator(device_type, language, locale) device_udid = TestCommandGenerator.device_udid(device_type) if device_udid locale ||= language.sub("-", "_") plist = { AppleLocale: locale, AppleLanguages: [language] } UI.("Localizing #{device_type} (AppleLocale=#{locale} AppleLanguages=[#{language}])") plist_path = "#{ENV['HOME']}/Library/Developer/CoreSimulator/Devices/#{device_udid}/data/Library/Preferences/.GlobalPreferences.plist" File.write(plist_path, Plist::Emit.dump(plist)) end end |
#prepare_for_launch(device_types, language, locale, launch_arguments) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb', line 29 def prepare_for_launch(device_types, language, locale, launch_arguments) screenshots_path = TestCommandGenerator.derived_data_path FileUtils.rm_rf(File.join(screenshots_path, "Logs")) FileUtils.rm_rf(screenshots_path) if launcher_config.clean FileUtils.mkdir_p(screenshots_path) FileUtils.mkdir_p(CACHE_DIR) FileUtils.mkdir_p(SCREENSHOTS_DIR) File.write(File.join(CACHE_DIR, "language.txt"), language) File.write(File.join(CACHE_DIR, "locale.txt"), locale || "") File.write(File.join(CACHE_DIR, "snapshot-launch_arguments.txt"), launch_arguments.last) prepare_simulators_for_launch(device_types, language: language, locale: locale) end |
#prepare_simulators_for_launch(device_types, language: nil, locale: nil) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb', line 45 def prepare_simulators_for_launch(device_types, language: nil, locale: nil) # Kill and shutdown all currently running simulators so that the following settings # changes will be picked up when they are started again. Snapshot.kill_simulator # because of https://github.com/fastlane/fastlane/issues/2533 `xcrun simctl shutdown booted &> /dev/null` Fixes::SimulatorZoomFix.patch Fixes::HardwareKeyboardFix.patch device_types.each do |type| if launcher_config.erase_simulator || launcher_config.localize_simulator erase_simulator(type) if launcher_config.localize_simulator localize_simulator(type, language, locale) end elsif launcher_config.reinstall_app # no need to reinstall if device has been erased uninstall_app(type) end end end |
#uninstall_app(device_type) ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 |
# File 'snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb', line 85 def uninstall_app(device_type) UI.verbose("Uninstalling app '#{launcher_config.app_identifier}' from #{device_type}...") launcher_config.app_identifier ||= UI.input("App Identifier: ") device_udid = TestCommandGenerator.device_udid(device_type) UI.("Launch Simulator #{device_type}") Helper.backticks("xcrun instruments -w #{device_udid} &> /dev/null") UI.("Uninstall application #{launcher_config.app_identifier}") Helper.backticks("xcrun simctl uninstall #{device_udid} #{launcher_config.app_identifier} &> /dev/null") end |