fastlane 2.141.0 → 2.142.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +1 -1
- data/README.md +84 -84
- data/fastlane/lib/fastlane/actions/README.md +2 -0
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +13 -5
- data/fastlane/lib/fastlane/actions/cocoapods.rb +2 -2
- data/fastlane/lib/fastlane/actions/ensure_git_branch.rb +1 -1
- data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +35 -7
- data/fastlane/lib/fastlane/actions/get_github_release.rb +3 -0
- data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +9 -3
- data/fastlane/lib/fastlane/actions/notarize.rb +183 -0
- data/fastlane/lib/fastlane/actions/s3.rb +2 -2
- data/fastlane/lib/fastlane/actions/spm.rb +8 -0
- data/fastlane/lib/fastlane/actions/swiftlint.rb +17 -2
- data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +13 -3
- data/fastlane/lib/fastlane/helper/adb_helper.rb +1 -1
- data/fastlane/lib/fastlane/plugins/plugin_manager.rb +1 -1
- data/fastlane/lib/fastlane/server/socket_server_action_command_executor.rb +1 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +55 -6
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/RubyCommand.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +5 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +2 -0
- data/fastlane_core/lib/fastlane_core/project.rb +4 -0
- data/gym/lib/gym/.code_signing_mapping.rb.swp +0 -0
- data/gym/lib/gym/runner.rb +2 -2
- data/match/lib/match/storage/google_cloud_storage.rb +2 -2
- data/pilot/lib/pilot/build_manager.rb +9 -3
- data/scan/lib/scan/options.rb +5 -0
- data/scan/lib/scan/runner.rb +9 -7
- data/scan/lib/scan/test_command_generator.rb +6 -3
- data/screengrab/lib/screengrab/runner.rb +20 -15
- data/snapshot/lib/snapshot/fixes/simulator_shared_pasteboard.rb +16 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +2 -0
- metadata +19 -16
@@ -102,6 +102,9 @@ protocol ScanfileProtocol: class {
|
|
102
102
|
/// Generate the json compilation database with clang naming convention (compile_commands.json)
|
103
103
|
var useClangReportName: Bool { get }
|
104
104
|
|
105
|
+
/// Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
|
106
|
+
var concurrentWorkers: Int? { get }
|
107
|
+
|
105
108
|
/// Constrain the number of simulator devices on which to test concurrently. Equivalent to -maximum-concurrent-test-simulator-destinations
|
106
109
|
var maxConcurrentSimulators: Int? { get }
|
107
110
|
|
@@ -210,6 +213,7 @@ extension ScanfileProtocol {
|
|
210
213
|
var shouldZipBuildProducts: Bool { return false }
|
211
214
|
var resultBundle: Bool { return false }
|
212
215
|
var useClangReportName: Bool { return false }
|
216
|
+
var concurrentWorkers: Int? { return nil }
|
213
217
|
var maxConcurrentSimulators: Int? { return nil }
|
214
218
|
var disableConcurrentTesting: Bool { return false }
|
215
219
|
var skipBuild: Bool { return false }
|
@@ -238,4 +242,4 @@ extension ScanfileProtocol {
|
|
238
242
|
|
239
243
|
// Please don't remove the lines below
|
240
244
|
// They are used to detect outdated files
|
241
|
-
// FastlaneRunnerAPIVersion [0.9.
|
245
|
+
// FastlaneRunnerAPIVersion [0.9.26]
|
@@ -10,6 +10,7 @@ module FastlaneCore
|
|
10
10
|
command << " -P #{certificate_password.shellescape}"
|
11
11
|
command << " -T /usr/bin/codesign" # to not be asked for permission when running a tool like `gym` (before Sierra)
|
12
12
|
command << " -T /usr/bin/security"
|
13
|
+
command << " -T /usr/bin/productbuild" # to not be asked for permission when using an installer cert for macOS
|
13
14
|
command << " 1> /dev/null" unless output
|
14
15
|
|
15
16
|
UI.command(command) if output
|
@@ -37,6 +38,7 @@ module FastlaneCore
|
|
37
38
|
if Helper.backticks('security -h | grep set-key-partition-list', print: false).length > 0
|
38
39
|
command = "security set-key-partition-list"
|
39
40
|
command << " -S apple-tool:,apple:"
|
41
|
+
command << " -s" # This is a needed in Catalina to prevent "security: SecKeychainItemCopyAccess: A missing value was detected."
|
40
42
|
command << " -k #{keychain_password.to_s.shellescape}"
|
41
43
|
command << " #{keychain_path.shellescape}"
|
42
44
|
command << " 1> /dev/null" # always disable stdout. This can be very verbose, and leak potentially sensitive info
|
@@ -294,6 +294,10 @@ module FastlaneCore
|
|
294
294
|
supported_platforms.include?(:iOS)
|
295
295
|
end
|
296
296
|
|
297
|
+
def watchos?
|
298
|
+
supported_platforms.include?(:watchOS)
|
299
|
+
end
|
300
|
+
|
297
301
|
def supported_platforms
|
298
302
|
supported_platforms = build_settings(key: "SUPPORTED_PLATFORMS")
|
299
303
|
if supported_platforms.nil?
|
Binary file
|
data/gym/lib/gym/runner.rb
CHANGED
@@ -25,11 +25,11 @@ module Gym
|
|
25
25
|
|
26
26
|
# Determine platform to archive
|
27
27
|
is_mac = Gym.project.mac? || Gym.building_mac_catalyst_for_mac?
|
28
|
-
is_ios = !is_mac && (Gym.project.ios? || Gym.project.tvos?)
|
28
|
+
is_ios = !is_mac && (Gym.project.ios? || Gym.project.tvos? || Gym.project.watchos?)
|
29
29
|
|
30
30
|
# Archive
|
31
31
|
if is_ios
|
32
|
-
fix_generic_archive # See https://github.com/fastlane/fastlane/pull/4325
|
32
|
+
fix_generic_archive unless Gym.project.watchos? # See https://github.com/fastlane/fastlane/pull/4325
|
33
33
|
return BuildCommandGenerator.archive_path if Gym.config[:skip_package_ipa]
|
34
34
|
|
35
35
|
package_app
|
@@ -181,7 +181,7 @@ module Match
|
|
181
181
|
end
|
182
182
|
|
183
183
|
def generate_matchfile_content
|
184
|
-
return "
|
184
|
+
return "google_cloud_bucket_name(\"#{self.bucket_name}\")"
|
185
185
|
end
|
186
186
|
|
187
187
|
private
|
@@ -349,7 +349,7 @@ module Match
|
|
349
349
|
UI.message("\t\t 1. Click on your bucket to open it".cyan)
|
350
350
|
UI.message("\t\t 2. Click 'Permissions'".cyan)
|
351
351
|
UI.message("\t\t 3. Click 'Add members'".cyan)
|
352
|
-
UI.message("\t\t 4. Enter the
|
352
|
+
UI.message("\t\t 4. Enter the service account email address".cyan)
|
353
353
|
UI.message("\t\t 5. Set the role to 'Storage Admin'".cyan)
|
354
354
|
UI.message("\t\t 6. Click 'Save'".cyan)
|
355
355
|
UI.message("")
|
@@ -481,12 +481,18 @@ module Pilot
|
|
481
481
|
end
|
482
482
|
|
483
483
|
def update_build_beta_details(build, info)
|
484
|
-
build_beta_detail = build.build_beta_detail
|
485
|
-
|
486
484
|
attributes = {}
|
487
485
|
attributes[:autoNotifyEnabled] = info[:auto_notify_enabled] if info.key?(:auto_notify_enabled)
|
486
|
+
build_beta_detail = build.build_beta_detail
|
488
487
|
|
489
|
-
|
488
|
+
# https://github.com/fastlane/fastlane/pull/16006
|
489
|
+
if build_beta_detail
|
490
|
+
Spaceship::ConnectAPI.patch_build_beta_details(build_beta_details_id: build_beta_detail.id, attributes: attributes)
|
491
|
+
else
|
492
|
+
if attributes[:autoNotifyEnabled]
|
493
|
+
UI.important("Unable to auto notify testers as the build did not include beta detail information - this is likely a temporary issue on TestFlight.")
|
494
|
+
end
|
495
|
+
end
|
490
496
|
end
|
491
497
|
end
|
492
498
|
# rubocop:enable Metrics/ClassLength
|
data/scan/lib/scan/options.rb
CHANGED
@@ -254,6 +254,11 @@ module Scan
|
|
254
254
|
default_value: false),
|
255
255
|
|
256
256
|
# concurrency
|
257
|
+
FastlaneCore::ConfigItem.new(key: :concurrent_workers,
|
258
|
+
type: Integer,
|
259
|
+
env_name: "SCAN_CONCURRENT_WORKERS",
|
260
|
+
description: "Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count",
|
261
|
+
optional: true),
|
257
262
|
FastlaneCore::ConfigItem.new(key: :max_concurrent_simulators,
|
258
263
|
type: Integer,
|
259
264
|
env_name: "SCAN_MAX_CONCURRENT_SIMULATORS",
|
data/scan/lib/scan/runner.rb
CHANGED
@@ -25,15 +25,17 @@ module Scan
|
|
25
25
|
def test_app
|
26
26
|
force_quit_simulator_processes if Scan.config[:force_quit_simulator]
|
27
27
|
|
28
|
-
if Scan.
|
29
|
-
Scan.
|
30
|
-
|
28
|
+
if Scan.devices
|
29
|
+
if Scan.config[:reset_simulator]
|
30
|
+
Scan.devices.each do |device|
|
31
|
+
FastlaneCore::Simulator.reset(udid: device.udid)
|
32
|
+
end
|
31
33
|
end
|
32
|
-
end
|
33
34
|
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
if Scan.config[:disable_slide_to_type]
|
36
|
+
Scan.devices.each do |device|
|
37
|
+
FastlaneCore::Simulator.disable_slide_to_type(udid: device.udid)
|
38
|
+
end
|
37
39
|
end
|
38
40
|
end
|
39
41
|
|
@@ -27,7 +27,7 @@ module Scan
|
|
27
27
|
UI.user_error!("No project/workspace found")
|
28
28
|
end
|
29
29
|
|
30
|
-
def options
|
30
|
+
def options # rubocop:disable Metrics/PerceivedComplexity
|
31
31
|
config = Scan.config
|
32
32
|
|
33
33
|
options = []
|
@@ -37,8 +37,11 @@ module Scan
|
|
37
37
|
options << "-toolchain '#{config[:toolchain]}'" if config[:toolchain]
|
38
38
|
options << "-derivedDataPath '#{config[:derived_data_path]}'" if config[:derived_data_path]
|
39
39
|
options << "-resultBundlePath '#{result_bundle_path}'" if config[:result_bundle]
|
40
|
-
options << "-
|
41
|
-
|
40
|
+
options << "-parallel-testing-worker-count #{config[:concurrent_workers]}" if config[:concurrent_workers]
|
41
|
+
if FastlaneCore::Helper.xcode_at_least?(10)
|
42
|
+
options << "-maximum-concurrent-test-simulator-destinations #{config[:max_concurrent_simulators]}" if config[:max_concurrent_simulators]
|
43
|
+
options << "-disable-concurrent-testing" if config[:disable_concurrent_testing]
|
44
|
+
end
|
42
45
|
options << "-enableCodeCoverage #{config[:code_coverage] ? 'YES' : 'NO'}" unless config[:code_coverage].nil?
|
43
46
|
options << "-enableAddressSanitizer #{config[:address_sanitizer] ? 'YES' : 'NO'}" unless config[:address_sanitizer].nil?
|
44
47
|
options << "-enableThreadSanitizer #{config[:thread_sanitizer] ? 'YES' : 'NO'}" unless config[:thread_sanitizer].nil?
|
@@ -73,15 +73,11 @@ module Screengrab
|
|
73
73
|
|
74
74
|
validate_apk(app_apk_path)
|
75
75
|
|
76
|
-
|
77
|
-
|
78
|
-
run_tests(device_serial, app_apk_path, tests_apk_path, test_classes_to_use, test_packages_to_use, @config[:launch_arguments])
|
79
|
-
|
80
|
-
number_of_screenshots = pull_screenshots_from_device(device_serial, device_screenshots_paths, device_type_dir_name)
|
76
|
+
number_of_screenshots = run_tests(device_type_dir_name, device_screenshots_paths, device_serial, app_apk_path, tests_apk_path, test_classes_to_use, test_packages_to_use, @config[:launch_arguments])
|
81
77
|
|
82
78
|
ReportsGenerator.new.generate
|
83
79
|
|
84
|
-
UI.success("Captured #{number_of_screenshots} screenshots! 📷✨")
|
80
|
+
UI.success("Captured #{number_of_screenshots} new screenshots! 📷✨")
|
85
81
|
end
|
86
82
|
|
87
83
|
def select_device
|
@@ -232,23 +228,29 @@ module Screengrab
|
|
232
228
|
end
|
233
229
|
end
|
234
230
|
|
235
|
-
def run_tests(device_serial, app_apk_path, tests_apk_path, test_classes_to_use, test_packages_to_use, launch_arguments)
|
231
|
+
def run_tests(device_type_dir_name, device_screenshots_paths, device_serial, app_apk_path, tests_apk_path, test_classes_to_use, test_packages_to_use, launch_arguments)
|
236
232
|
unless @config[:reinstall_app]
|
237
233
|
install_apks(device_serial, app_apk_path, tests_apk_path)
|
238
234
|
grant_permissions(device_serial)
|
235
|
+
enable_clean_status_bar(device_serial, app_apk_path)
|
239
236
|
end
|
240
237
|
|
238
|
+
number_of_screenshots = 0
|
239
|
+
|
241
240
|
@config[:locales].each do |locale|
|
242
241
|
if @config[:reinstall_app]
|
243
242
|
uninstall_apks(device_serial, @config[:app_package_name], @config[:tests_package_name])
|
244
243
|
install_apks(device_serial, app_apk_path, tests_apk_path)
|
245
244
|
grant_permissions(device_serial)
|
245
|
+
enable_clean_status_bar(device_serial, app_apk_path)
|
246
246
|
end
|
247
|
-
run_tests_for_locale(locale, device_serial, test_classes_to_use, test_packages_to_use, launch_arguments)
|
247
|
+
number_of_screenshots += run_tests_for_locale(device_type_dir_name, device_screenshots_paths, locale, device_serial, test_classes_to_use, test_packages_to_use, launch_arguments)
|
248
248
|
end
|
249
|
+
|
250
|
+
number_of_screenshots
|
249
251
|
end
|
250
252
|
|
251
|
-
def run_tests_for_locale(locale, device_serial, test_classes_to_use, test_packages_to_use, launch_arguments)
|
253
|
+
def run_tests_for_locale(device_type_dir_name, device_screenshots_paths, locale, device_serial, test_classes_to_use, test_packages_to_use, launch_arguments)
|
252
254
|
UI.message("Running tests for locale: #{locale}")
|
253
255
|
|
254
256
|
instrument_command = ["-s #{device_serial} shell am instrument --no-window-animation -w",
|
@@ -271,10 +273,12 @@ module Screengrab
|
|
271
273
|
UI.error("Tests failed")
|
272
274
|
end
|
273
275
|
end
|
276
|
+
|
277
|
+
pull_screenshots_from_device(locale, device_serial, device_screenshots_paths, device_type_dir_name)
|
274
278
|
end
|
275
279
|
|
276
|
-
def pull_screenshots_from_device(device_serial, device_screenshots_paths, device_type_dir_name)
|
277
|
-
UI.message("Pulling captured screenshots from the device")
|
280
|
+
def pull_screenshots_from_device(locale, device_serial, device_screenshots_paths, device_type_dir_name)
|
281
|
+
UI.message("Pulling captured screenshots for locale #{locale} from the device")
|
278
282
|
starting_screenshot_count = screenshot_file_names_in(@config[:output_directory], device_type_dir_name).length
|
279
283
|
|
280
284
|
UI.verbose("Starting screenshot count is: #{starting_screenshot_count}")
|
@@ -296,7 +300,7 @@ module Screengrab
|
|
296
300
|
#
|
297
301
|
# Therefore, we'll move the pulled screenshots from their genericly named folder to one named by the
|
298
302
|
# user provided device_type option value to match the directory structure that supply expects
|
299
|
-
move_pulled_screenshots(tempdir, device_type_dir_name)
|
303
|
+
move_pulled_screenshots(locale, tempdir, device_type_dir_name)
|
300
304
|
end
|
301
305
|
|
302
306
|
ending_screenshot_count = screenshot_file_names_in(@config[:output_directory], device_type_dir_name).length
|
@@ -305,7 +309,8 @@ module Screengrab
|
|
305
309
|
|
306
310
|
# Because we can't guarantee the screenshot output directory will be empty when we pull, we determine
|
307
311
|
# success based on whether there are more screenshots there than when we started.
|
308
|
-
|
312
|
+
# This is only applicable though when `clear_previous_screenshots` is set to `true`.
|
313
|
+
if starting_screenshot_count == ending_screenshot_count && @config[:clear_previous_screenshots]
|
309
314
|
UI.error("Make sure you've used Screengrab.screenshot() in your tests and that your expected tests are being run.")
|
310
315
|
UI.abort_with_message!("No screenshots were detected 📷❌")
|
311
316
|
end
|
@@ -313,7 +318,7 @@ module Screengrab
|
|
313
318
|
ending_screenshot_count - starting_screenshot_count
|
314
319
|
end
|
315
320
|
|
316
|
-
def move_pulled_screenshots(pull_dir, device_type_dir_name)
|
321
|
+
def move_pulled_screenshots(locale, pull_dir, device_type_dir_name)
|
317
322
|
# Glob pattern that finds the pulled screenshots directory for each locale
|
318
323
|
# Possible matches:
|
319
324
|
# [pull_dir]/en-US/images/screenshots
|
@@ -337,7 +342,7 @@ module Screengrab
|
|
337
342
|
# specific name, as expected by supply
|
338
343
|
#
|
339
344
|
# (Moved to: fastlane/metadata/android/en-US/images/phoneScreenshots)
|
340
|
-
dest_dir = File.join(File.dirname(dest_dir), device_type_dir_name)
|
345
|
+
dest_dir = File.join(File.dirname(dest_dir), locale, 'images', device_type_dir_name)
|
341
346
|
|
342
347
|
FileUtils.mkdir_p(dest_dir)
|
343
348
|
FileUtils.cp_r(src_screenshots, dest_dir)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative '../module'
|
2
|
+
|
3
|
+
module Snapshot
|
4
|
+
module Fixes
|
5
|
+
# Becoming first responder can trigger Pasteboard sync, which can stall and crash the simulator
|
6
|
+
# See https://twitter.com/steipete/status/1227551552317140992
|
7
|
+
|
8
|
+
class SharedPasteboardFix
|
9
|
+
def self.patch
|
10
|
+
UI.verbose("Patching simulator to disable Pasteboard automatic sync")
|
11
|
+
|
12
|
+
Helper.backticks("defaults write com.apple.iphonesimulator PasteboardAutomaticSync -bool false", print: FastlaneCore::Globals.verbose?)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -5,6 +5,7 @@ require_relative '../test_command_generator'
|
|
5
5
|
require_relative '../collector'
|
6
6
|
require_relative '../fixes/hardware_keyboard_fix'
|
7
7
|
require_relative '../fixes/simulator_zoom_fix'
|
8
|
+
require_relative '../fixes/simulator_shared_pasteboard'
|
8
9
|
|
9
10
|
module Snapshot
|
10
11
|
class SimulatorLauncherBase
|
@@ -53,6 +54,7 @@ module Snapshot
|
|
53
54
|
|
54
55
|
Fixes::SimulatorZoomFix.patch
|
55
56
|
Fixes::HardwareKeyboardFix.patch
|
57
|
+
Fixes::SharedPasteboardFix.patch
|
56
58
|
|
57
59
|
device_types.each do |type|
|
58
60
|
if launcher_config.erase_simulator || launcher_config.localize_simulator || !launcher_config.dark_mode.nil?
|
metadata
CHANGED
@@ -1,35 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.142.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
- Maksym Grebenets
|
9
|
-
- Olivier Halligon
|
10
|
-
- Daniel Jankowski
|
11
|
-
- Fumiya Nakamura
|
7
|
+
- Manu Wallner
|
12
8
|
- Josh Holtz
|
13
|
-
- Andrew McBurney
|
14
9
|
- Iulian Onofrei
|
15
|
-
-
|
10
|
+
- Luka Mirosevic
|
11
|
+
- Danielle Tomlinson
|
16
12
|
- Joshua Liebowitz
|
17
|
-
- Max Ott
|
18
|
-
- Stefan Natchev
|
19
13
|
- Jérôme Lacoste
|
14
|
+
- Fumiya Nakamura
|
20
15
|
- Aaron Brager
|
21
|
-
- Jan Piotrowski
|
22
|
-
- Danielle Tomlinson
|
23
|
-
- Jimmy Dee
|
24
|
-
- Manu Wallner
|
25
|
-
- Luka Mirosevic
|
26
16
|
- Felix Krause
|
17
|
+
- Olivier Halligon
|
27
18
|
- Matthew Ellis
|
19
|
+
- Daniel Jankowski
|
20
|
+
- Maksym Grebenets
|
21
|
+
- Max Ott
|
22
|
+
- Kohki Miki
|
23
|
+
- Jimmy Dee
|
24
|
+
- Stefan Natchev
|
28
25
|
- Helmut Januschka
|
26
|
+
- Andrew McBurney
|
27
|
+
- Jan Piotrowski
|
28
|
+
- Jorge Revuelta H
|
29
29
|
autorequire:
|
30
30
|
bindir: bin
|
31
31
|
cert_chain: []
|
32
|
-
date: 2020-
|
32
|
+
date: 2020-02-18 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: slack-notifier
|
@@ -1140,6 +1140,7 @@ files:
|
|
1140
1140
|
- fastlane/lib/fastlane/actions/min_fastlane_version.rb
|
1141
1141
|
- fastlane/lib/fastlane/actions/modify_services.rb
|
1142
1142
|
- fastlane/lib/fastlane/actions/nexus_upload.rb
|
1143
|
+
- fastlane/lib/fastlane/actions/notarize.rb
|
1143
1144
|
- fastlane/lib/fastlane/actions/notification.rb
|
1144
1145
|
- fastlane/lib/fastlane/actions/notify.rb
|
1145
1146
|
- fastlane/lib/fastlane/actions/number_of_commits.rb
|
@@ -1438,6 +1439,7 @@ files:
|
|
1438
1439
|
- gym/lib/assets/GymfileTemplate.swift
|
1439
1440
|
- gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh
|
1440
1441
|
- gym/lib/gym.rb
|
1442
|
+
- gym/lib/gym/.code_signing_mapping.rb.swp
|
1441
1443
|
- gym/lib/gym/code_signing_mapping.rb
|
1442
1444
|
- gym/lib/gym/commands_generator.rb
|
1443
1445
|
- gym/lib/gym/detect_values.rb
|
@@ -1588,6 +1590,7 @@ files:
|
|
1588
1590
|
- snapshot/lib/snapshot/error_handler.rb
|
1589
1591
|
- snapshot/lib/snapshot/fixes/README.md
|
1590
1592
|
- snapshot/lib/snapshot/fixes/hardware_keyboard_fix.rb
|
1593
|
+
- snapshot/lib/snapshot/fixes/simulator_shared_pasteboard.rb
|
1591
1594
|
- snapshot/lib/snapshot/fixes/simulator_zoom_fix.rb
|
1592
1595
|
- snapshot/lib/snapshot/latest_os_version.rb
|
1593
1596
|
- snapshot/lib/snapshot/module.rb
|