fastlane 2.201.0 → 2.203.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +88 -88
  3. data/deliver/lib/deliver/runner.rb +19 -2
  4. data/deliver/lib/deliver/submit_for_review.rb +25 -3
  5. data/fastlane/lib/fastlane/actions/run_tests.rb +18 -2
  6. data/fastlane/lib/fastlane/actions/xcov.rb +5 -0
  7. data/fastlane/lib/fastlane/version.rb +1 -1
  8. data/fastlane/swift/Deliverfile.swift +1 -1
  9. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  10. data/fastlane/swift/Fastlane.swift +177 -157
  11. data/fastlane/swift/Gymfile.swift +1 -1
  12. data/fastlane/swift/GymfileProtocol.swift +1 -1
  13. data/fastlane/swift/Matchfile.swift +1 -1
  14. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  15. data/fastlane/swift/Precheckfile.swift +1 -1
  16. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  17. data/fastlane/swift/Scanfile.swift +1 -1
  18. data/fastlane/swift/ScanfileProtocol.swift +6 -2
  19. data/fastlane/swift/Screengrabfile.swift +1 -1
  20. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  21. data/fastlane/swift/Snapshotfile.swift +1 -1
  22. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  23. data/fastlane/swift/formatting/Brewfile.lock.json +14 -14
  24. data/fastlane_core/lib/fastlane_core/.helper.rb.swp +0 -0
  25. data/scan/lib/scan/.detect_values.rb.swp +0 -0
  26. data/scan/lib/scan/.runner.rb.swp +0 -0
  27. data/scan/lib/scan/error_handler.rb +9 -0
  28. data/scan/lib/scan/options.rb +6 -1
  29. data/scan/lib/scan/runner.rb +36 -9
  30. data/scan/lib/scan/test_command_generator.rb +8 -3
  31. data/spaceship/lib/spaceship/connect_api/models/app.rb +2 -1
  32. data/trainer/lib/trainer/options.rb +11 -0
  33. metadata +25 -22
@@ -8600,6 +8600,7 @@ public func rubyVersion() {
8600
8600
  - outputXctestrun: Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?
8601
8601
  - resultBundle: Should an Xcode result bundle be generated in the output directory
8602
8602
  - useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
8603
+ - parallelTesting: Optionally override the per-target setting in the scheme for running tests in parallel. Equivalent to -parallel-testing-enabled
8603
8604
  - concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
8604
8605
  - maxConcurrentSimulators: Constrain the number of simulator devices on which to test concurrently. Equivalent to -maximum-concurrent-test-simulator-destinations
8605
8606
  - disableConcurrentTesting: Do not run test bundles in parallel on the specified destinations. Testing will occur on each destination serially. Equivalent to -disable-concurrent-testing
@@ -8629,86 +8630,89 @@ public func rubyVersion() {
8629
8630
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
8630
8631
  - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
8631
8632
  - useSystemScm: Lets xcodebuild use system's scm configuration
8632
- - numberOfRetries: The number of times a test can fail before scan should stop retrying
8633
+ - numberOfRetries: The number of times a test can fail
8633
8634
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
8634
8635
 
8636
+ - returns: Outputs has of results with :number_of_tests, :number_of_failures, :number_of_retries, :number_of_tests_excluding_retries, :number_of_failures_excluding_retries
8637
+
8635
8638
  More information: https://docs.fastlane.tools/actions/scan/
8636
8639
  */
8637
- public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8638
- project: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8639
- packagePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8640
- scheme: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8641
- device: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8642
- devices: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
8643
- skipDetectDevices: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8644
- ensureDevicesFound: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8645
- forceQuitSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8646
- resetSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8647
- disableSlideToType: OptionalConfigValue<Bool> = .fastlaneDefault(true),
8648
- prelaunchSimulator: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8649
- reinstallApp: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8650
- appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8651
- onlyTesting: Any? = nil,
8652
- skipTesting: Any? = nil,
8653
- testplan: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8654
- onlyTestConfigurations: Any? = nil,
8655
- skipTestConfigurations: Any? = nil,
8656
- xctestrun: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8657
- toolchain: Any? = nil,
8658
- clean: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8659
- codeCoverage: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8660
- addressSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8661
- threadSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8662
- openReport: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8663
- outputDirectory: String = "./test_output",
8664
- outputStyle: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8665
- outputTypes: String = "html,junit",
8666
- outputFiles: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8667
- buildlogPath: String = "~/Library/Logs/scan",
8668
- includeSimulatorLogs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8669
- suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8670
- xcodebuildFormatter: String = "xcbeautify",
8671
- outputRemoveRetryAttempts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8672
- disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8673
- formatter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8674
- xcprettyFormatter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8675
- xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8676
- derivedDataPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8677
- shouldZipBuildProducts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8678
- outputXctestrun: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8679
- resultBundle: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8680
- useClangReportName: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8681
- concurrentWorkers: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
8682
- maxConcurrentSimulators: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
8683
- disableConcurrentTesting: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8684
- skipBuild: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8685
- testWithoutBuilding: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8686
- buildForTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8687
- sdk: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8688
- configuration: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8689
- xcargs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8690
- xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8691
- appName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8692
- deploymentTargetVersion: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8693
- slackUrl: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8694
- slackChannel: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8695
- slackMessage: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8696
- slackUseWebhookConfiguredUsernameAndIcon: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8697
- slackUsername: String = "fastlane",
8698
- slackIconUrl: String = "https://fastlane.tools/assets/img/fastlane_icon.png",
8699
- skipSlack: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8700
- slackOnlyOnFailure: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8701
- slackDefaultPayloads: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
8702
- destination: Any? = nil,
8703
- catalystPlatform: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8704
- customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8705
- xcodebuildCommand: String = "env NSUnbufferedIO=YES xcodebuild",
8706
- clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8707
- skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8708
- disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8709
- useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8710
- numberOfRetries: Int = 0,
8711
- failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(true))
8640
+ @discardableResult public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8641
+ project: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8642
+ packagePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8643
+ scheme: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8644
+ device: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8645
+ devices: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
8646
+ skipDetectDevices: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8647
+ ensureDevicesFound: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8648
+ forceQuitSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8649
+ resetSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8650
+ disableSlideToType: OptionalConfigValue<Bool> = .fastlaneDefault(true),
8651
+ prelaunchSimulator: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8652
+ reinstallApp: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8653
+ appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8654
+ onlyTesting: Any? = nil,
8655
+ skipTesting: Any? = nil,
8656
+ testplan: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8657
+ onlyTestConfigurations: Any? = nil,
8658
+ skipTestConfigurations: Any? = nil,
8659
+ xctestrun: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8660
+ toolchain: Any? = nil,
8661
+ clean: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8662
+ codeCoverage: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8663
+ addressSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8664
+ threadSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8665
+ openReport: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8666
+ outputDirectory: String = "./test_output",
8667
+ outputStyle: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8668
+ outputTypes: String = "html,junit",
8669
+ outputFiles: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8670
+ buildlogPath: String = "~/Library/Logs/scan",
8671
+ includeSimulatorLogs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8672
+ suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8673
+ xcodebuildFormatter: String = "xcbeautify",
8674
+ outputRemoveRetryAttempts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8675
+ disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8676
+ formatter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8677
+ xcprettyFormatter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8678
+ xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8679
+ derivedDataPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8680
+ shouldZipBuildProducts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8681
+ outputXctestrun: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8682
+ resultBundle: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8683
+ useClangReportName: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8684
+ parallelTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8685
+ concurrentWorkers: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
8686
+ maxConcurrentSimulators: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
8687
+ disableConcurrentTesting: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8688
+ skipBuild: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8689
+ testWithoutBuilding: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8690
+ buildForTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8691
+ sdk: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8692
+ configuration: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8693
+ xcargs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8694
+ xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8695
+ appName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8696
+ deploymentTargetVersion: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8697
+ slackUrl: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8698
+ slackChannel: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8699
+ slackMessage: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8700
+ slackUseWebhookConfiguredUsernameAndIcon: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8701
+ slackUsername: String = "fastlane",
8702
+ slackIconUrl: String = "https://fastlane.tools/assets/img/fastlane_icon.png",
8703
+ skipSlack: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8704
+ slackOnlyOnFailure: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8705
+ slackDefaultPayloads: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
8706
+ destination: Any? = nil,
8707
+ catalystPlatform: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8708
+ customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8709
+ xcodebuildCommand: String = "env NSUnbufferedIO=YES xcodebuild",
8710
+ clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8711
+ skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8712
+ disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8713
+ useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8714
+ numberOfRetries: Int = 0,
8715
+ failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(true)) -> [String: Any]
8712
8716
  {
8713
8717
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
8714
8718
  let projectArg = project.asRubyArgument(name: "project", type: nil)
@@ -8754,6 +8758,7 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8754
8758
  let outputXctestrunArg = outputXctestrun.asRubyArgument(name: "output_xctestrun", type: nil)
8755
8759
  let resultBundleArg = resultBundle.asRubyArgument(name: "result_bundle", type: nil)
8756
8760
  let useClangReportNameArg = useClangReportName.asRubyArgument(name: "use_clang_report_name", type: nil)
8761
+ let parallelTestingArg = parallelTesting.asRubyArgument(name: "parallel_testing", type: nil)
8757
8762
  let concurrentWorkersArg = concurrentWorkers.asRubyArgument(name: "concurrent_workers", type: nil)
8758
8763
  let maxConcurrentSimulatorsArg = maxConcurrentSimulators.asRubyArgument(name: "max_concurrent_simulators", type: nil)
8759
8764
  let disableConcurrentTestingArg = disableConcurrentTesting.asRubyArgument(name: "disable_concurrent_testing", type: nil)
@@ -8829,6 +8834,7 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8829
8834
  outputXctestrunArg,
8830
8835
  resultBundleArg,
8831
8836
  useClangReportNameArg,
8837
+ parallelTestingArg,
8832
8838
  concurrentWorkersArg,
8833
8839
  maxConcurrentSimulatorsArg,
8834
8840
  disableConcurrentTestingArg,
@@ -8864,7 +8870,7 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8864
8870
  .filter { $0?.value != nil }
8865
8871
  .compactMap { $0 }
8866
8872
  let command = RubyCommand(commandID: "", methodName: "run_tests", className: nil, args: args)
8867
- _ = runner.executeCommand(command)
8873
+ return parseDictionary(fromString: runner.executeCommand(command))
8868
8874
  }
8869
8875
 
8870
8876
  /**
@@ -9017,6 +9023,7 @@ public func say(text: [String],
9017
9023
  - outputXctestrun: Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?
9018
9024
  - resultBundle: Should an Xcode result bundle be generated in the output directory
9019
9025
  - useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
9026
+ - parallelTesting: Optionally override the per-target setting in the scheme for running tests in parallel. Equivalent to -parallel-testing-enabled
9020
9027
  - concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
9021
9028
  - maxConcurrentSimulators: Constrain the number of simulator devices on which to test concurrently. Equivalent to -maximum-concurrent-test-simulator-destinations
9022
9029
  - disableConcurrentTesting: Do not run test bundles in parallel on the specified destinations. Testing will occur on each destination serially. Equivalent to -disable-concurrent-testing
@@ -9046,86 +9053,89 @@ public func say(text: [String],
9046
9053
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
9047
9054
  - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
9048
9055
  - useSystemScm: Lets xcodebuild use system's scm configuration
9049
- - numberOfRetries: The number of times a test can fail before scan should stop retrying
9056
+ - numberOfRetries: The number of times a test can fail
9050
9057
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
9051
9058
 
9059
+ - returns: Outputs has of results with :number_of_tests, :number_of_failures, :number_of_retries, :number_of_tests_excluding_retries, :number_of_failures_excluding_retries
9060
+
9052
9061
  More information: https://docs.fastlane.tools/actions/scan/
9053
9062
  */
9054
- public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.workspace),
9055
- project: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.project),
9056
- packagePath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.packagePath),
9057
- scheme: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.scheme),
9058
- device: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.device),
9059
- devices: OptionalConfigValue<[String]?> = .fastlaneDefault(scanfile.devices),
9060
- skipDetectDevices: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipDetectDevices),
9061
- ensureDevicesFound: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.ensureDevicesFound),
9062
- forceQuitSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.forceQuitSimulator),
9063
- resetSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.resetSimulator),
9064
- disableSlideToType: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disableSlideToType),
9065
- prelaunchSimulator: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.prelaunchSimulator),
9066
- reinstallApp: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.reinstallApp),
9067
- appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.appIdentifier),
9068
- onlyTesting: Any? = scanfile.onlyTesting,
9069
- skipTesting: Any? = scanfile.skipTesting,
9070
- testplan: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.testplan),
9071
- onlyTestConfigurations: Any? = scanfile.onlyTestConfigurations,
9072
- skipTestConfigurations: Any? = scanfile.skipTestConfigurations,
9073
- xctestrun: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xctestrun),
9074
- toolchain: Any? = scanfile.toolchain,
9075
- clean: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.clean),
9076
- codeCoverage: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.codeCoverage),
9077
- addressSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.addressSanitizer),
9078
- threadSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.threadSanitizer),
9079
- openReport: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.openReport),
9080
- outputDirectory: String = scanfile.outputDirectory,
9081
- outputStyle: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.outputStyle),
9082
- outputTypes: String = scanfile.outputTypes,
9083
- outputFiles: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.outputFiles),
9084
- buildlogPath: String = scanfile.buildlogPath,
9085
- includeSimulatorLogs: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.includeSimulatorLogs),
9086
- suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.suppressXcodeOutput),
9087
- xcodebuildFormatter: String = scanfile.xcodebuildFormatter,
9088
- outputRemoveRetryAttempts: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.outputRemoveRetryAttempts),
9089
- disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.disableXcpretty),
9090
- formatter: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.formatter),
9091
- xcprettyFormatter: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcprettyFormatter),
9092
- xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcprettyArgs),
9093
- derivedDataPath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.derivedDataPath),
9094
- shouldZipBuildProducts: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.shouldZipBuildProducts),
9095
- outputXctestrun: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.outputXctestrun),
9096
- resultBundle: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.resultBundle),
9097
- useClangReportName: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.useClangReportName),
9098
- concurrentWorkers: OptionalConfigValue<Int?> = .fastlaneDefault(scanfile.concurrentWorkers),
9099
- maxConcurrentSimulators: OptionalConfigValue<Int?> = .fastlaneDefault(scanfile.maxConcurrentSimulators),
9100
- disableConcurrentTesting: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disableConcurrentTesting),
9101
- skipBuild: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipBuild),
9102
- testWithoutBuilding: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.testWithoutBuilding),
9103
- buildForTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.buildForTesting),
9104
- sdk: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.sdk),
9105
- configuration: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.configuration),
9106
- xcargs: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcargs),
9107
- xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcconfig),
9108
- appName: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.appName),
9109
- deploymentTargetVersion: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.deploymentTargetVersion),
9110
- slackUrl: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackUrl),
9111
- slackChannel: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackChannel),
9112
- slackMessage: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackMessage),
9113
- slackUseWebhookConfiguredUsernameAndIcon: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.slackUseWebhookConfiguredUsernameAndIcon),
9114
- slackUsername: String = scanfile.slackUsername,
9115
- slackIconUrl: String = scanfile.slackIconUrl,
9116
- skipSlack: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipSlack),
9117
- slackOnlyOnFailure: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.slackOnlyOnFailure),
9118
- slackDefaultPayloads: OptionalConfigValue<[String]?> = .fastlaneDefault(scanfile.slackDefaultPayloads),
9119
- destination: Any? = scanfile.destination,
9120
- catalystPlatform: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.catalystPlatform),
9121
- customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.customReportFileName),
9122
- xcodebuildCommand: String = scanfile.xcodebuildCommand,
9123
- clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.clonedSourcePackagesPath),
9124
- skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipPackageDependenciesResolution),
9125
- disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disablePackageAutomaticUpdates),
9126
- useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.useSystemScm),
9127
- numberOfRetries: Int = scanfile.numberOfRetries,
9128
- failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.failBuild))
9063
+ @discardableResult public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.workspace),
9064
+ project: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.project),
9065
+ packagePath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.packagePath),
9066
+ scheme: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.scheme),
9067
+ device: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.device),
9068
+ devices: OptionalConfigValue<[String]?> = .fastlaneDefault(scanfile.devices),
9069
+ skipDetectDevices: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipDetectDevices),
9070
+ ensureDevicesFound: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.ensureDevicesFound),
9071
+ forceQuitSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.forceQuitSimulator),
9072
+ resetSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.resetSimulator),
9073
+ disableSlideToType: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disableSlideToType),
9074
+ prelaunchSimulator: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.prelaunchSimulator),
9075
+ reinstallApp: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.reinstallApp),
9076
+ appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.appIdentifier),
9077
+ onlyTesting: Any? = scanfile.onlyTesting,
9078
+ skipTesting: Any? = scanfile.skipTesting,
9079
+ testplan: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.testplan),
9080
+ onlyTestConfigurations: Any? = scanfile.onlyTestConfigurations,
9081
+ skipTestConfigurations: Any? = scanfile.skipTestConfigurations,
9082
+ xctestrun: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xctestrun),
9083
+ toolchain: Any? = scanfile.toolchain,
9084
+ clean: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.clean),
9085
+ codeCoverage: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.codeCoverage),
9086
+ addressSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.addressSanitizer),
9087
+ threadSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.threadSanitizer),
9088
+ openReport: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.openReport),
9089
+ outputDirectory: String = scanfile.outputDirectory,
9090
+ outputStyle: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.outputStyle),
9091
+ outputTypes: String = scanfile.outputTypes,
9092
+ outputFiles: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.outputFiles),
9093
+ buildlogPath: String = scanfile.buildlogPath,
9094
+ includeSimulatorLogs: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.includeSimulatorLogs),
9095
+ suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.suppressXcodeOutput),
9096
+ xcodebuildFormatter: String = scanfile.xcodebuildFormatter,
9097
+ outputRemoveRetryAttempts: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.outputRemoveRetryAttempts),
9098
+ disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.disableXcpretty),
9099
+ formatter: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.formatter),
9100
+ xcprettyFormatter: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcprettyFormatter),
9101
+ xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcprettyArgs),
9102
+ derivedDataPath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.derivedDataPath),
9103
+ shouldZipBuildProducts: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.shouldZipBuildProducts),
9104
+ outputXctestrun: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.outputXctestrun),
9105
+ resultBundle: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.resultBundle),
9106
+ useClangReportName: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.useClangReportName),
9107
+ parallelTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.parallelTesting),
9108
+ concurrentWorkers: OptionalConfigValue<Int?> = .fastlaneDefault(scanfile.concurrentWorkers),
9109
+ maxConcurrentSimulators: OptionalConfigValue<Int?> = .fastlaneDefault(scanfile.maxConcurrentSimulators),
9110
+ disableConcurrentTesting: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disableConcurrentTesting),
9111
+ skipBuild: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipBuild),
9112
+ testWithoutBuilding: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.testWithoutBuilding),
9113
+ buildForTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.buildForTesting),
9114
+ sdk: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.sdk),
9115
+ configuration: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.configuration),
9116
+ xcargs: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcargs),
9117
+ xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcconfig),
9118
+ appName: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.appName),
9119
+ deploymentTargetVersion: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.deploymentTargetVersion),
9120
+ slackUrl: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackUrl),
9121
+ slackChannel: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackChannel),
9122
+ slackMessage: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackMessage),
9123
+ slackUseWebhookConfiguredUsernameAndIcon: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.slackUseWebhookConfiguredUsernameAndIcon),
9124
+ slackUsername: String = scanfile.slackUsername,
9125
+ slackIconUrl: String = scanfile.slackIconUrl,
9126
+ skipSlack: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipSlack),
9127
+ slackOnlyOnFailure: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.slackOnlyOnFailure),
9128
+ slackDefaultPayloads: OptionalConfigValue<[String]?> = .fastlaneDefault(scanfile.slackDefaultPayloads),
9129
+ destination: Any? = scanfile.destination,
9130
+ catalystPlatform: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.catalystPlatform),
9131
+ customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.customReportFileName),
9132
+ xcodebuildCommand: String = scanfile.xcodebuildCommand,
9133
+ clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.clonedSourcePackagesPath),
9134
+ skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipPackageDependenciesResolution),
9135
+ disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disablePackageAutomaticUpdates),
9136
+ useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.useSystemScm),
9137
+ numberOfRetries: Int = scanfile.numberOfRetries,
9138
+ failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.failBuild)) -> [String: Any]
9129
9139
  {
9130
9140
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
9131
9141
  let projectArg = project.asRubyArgument(name: "project", type: nil)
@@ -9171,6 +9181,7 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9171
9181
  let outputXctestrunArg = outputXctestrun.asRubyArgument(name: "output_xctestrun", type: nil)
9172
9182
  let resultBundleArg = resultBundle.asRubyArgument(name: "result_bundle", type: nil)
9173
9183
  let useClangReportNameArg = useClangReportName.asRubyArgument(name: "use_clang_report_name", type: nil)
9184
+ let parallelTestingArg = parallelTesting.asRubyArgument(name: "parallel_testing", type: nil)
9174
9185
  let concurrentWorkersArg = concurrentWorkers.asRubyArgument(name: "concurrent_workers", type: nil)
9175
9186
  let maxConcurrentSimulatorsArg = maxConcurrentSimulators.asRubyArgument(name: "max_concurrent_simulators", type: nil)
9176
9187
  let disableConcurrentTestingArg = disableConcurrentTesting.asRubyArgument(name: "disable_concurrent_testing", type: nil)
@@ -9246,6 +9257,7 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9246
9257
  outputXctestrunArg,
9247
9258
  resultBundleArg,
9248
9259
  useClangReportNameArg,
9260
+ parallelTestingArg,
9249
9261
  concurrentWorkersArg,
9250
9262
  maxConcurrentSimulatorsArg,
9251
9263
  disableConcurrentTestingArg,
@@ -9281,7 +9293,7 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9281
9293
  .filter { $0?.value != nil }
9282
9294
  .compactMap { $0 }
9283
9295
  let command = RubyCommand(commandID: "", methodName: "scan", className: nil, args: args)
9284
- _ = runner.executeCommand(command)
9296
+ return parseDictionary(fromString: runner.executeCommand(command))
9285
9297
  }
9286
9298
 
9287
9299
  /**
@@ -11433,31 +11445,39 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11433
11445
  - path: Path to the directory that should be converted
11434
11446
  - extension: The extension for the newly created file. Usually .xml or .junit
11435
11447
  - outputDirectory: Directoy in which the xml files should be written to. Same directory as source by default
11448
+ - outputFilename: Filename the xml file should be written to. Defaults to name of input file. (Only works if one input file is used)
11436
11449
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're handling this with a test reporter
11437
11450
  - xcprettyNaming: Produces class name and test name identical to xcpretty naming in junit file
11438
11451
  - silent: Silences all output
11452
+ - outputRemoveRetryAttempts: Doesn't include retry attempts in the output
11439
11453
 
11440
11454
  - returns: A hash with the key being the path of the generated file, the value being if the tests were successful
11441
11455
  */
11442
11456
  public func trainer(path: String = ".",
11443
11457
  extension: String = ".xml",
11444
11458
  outputDirectory: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11459
+ outputFilename: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11445
11460
  failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(true),
11446
11461
  xcprettyNaming: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11447
- silent: OptionalConfigValue<Bool> = .fastlaneDefault(false))
11462
+ silent: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11463
+ outputRemoveRetryAttempts: OptionalConfigValue<Bool> = .fastlaneDefault(false))
11448
11464
  {
11449
11465
  let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
11450
11466
  let extensionArg = RubyCommand.Argument(name: "extension", value: `extension`, type: nil)
11451
11467
  let outputDirectoryArg = outputDirectory.asRubyArgument(name: "output_directory", type: nil)
11468
+ let outputFilenameArg = outputFilename.asRubyArgument(name: "output_filename", type: nil)
11452
11469
  let failBuildArg = failBuild.asRubyArgument(name: "fail_build", type: nil)
11453
11470
  let xcprettyNamingArg = xcprettyNaming.asRubyArgument(name: "xcpretty_naming", type: nil)
11454
11471
  let silentArg = silent.asRubyArgument(name: "silent", type: nil)
11472
+ let outputRemoveRetryAttemptsArg = outputRemoveRetryAttempts.asRubyArgument(name: "output_remove_retry_attempts", type: nil)
11455
11473
  let array: [RubyCommand.Argument?] = [pathArg,
11456
11474
  extensionArg,
11457
11475
  outputDirectoryArg,
11476
+ outputFilenameArg,
11458
11477
  failBuildArg,
11459
11478
  xcprettyNamingArg,
11460
- silentArg]
11479
+ silentArg,
11480
+ outputRemoveRetryAttemptsArg]
11461
11481
  let args: [RubyCommand.Argument] = array
11462
11482
  .filter { $0?.value != nil }
11463
11483
  .compactMap { $0 }
@@ -13386,4 +13406,4 @@ public let snapshotfile: Snapshotfile = .init()
13386
13406
 
13387
13407
  // Please don't remove the lines below
13388
13408
  // They are used to detect outdated files
13389
- // FastlaneRunnerAPIVersion [0.9.144]
13409
+ // FastlaneRunnerAPIVersion [0.9.148]
@@ -17,4 +17,4 @@ public class Gymfile: GymfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.201.0
20
+ // Generated with fastlane 2.203.0
@@ -204,4 +204,4 @@ public extension GymfileProtocol {
204
204
 
205
205
  // Please don't remove the lines below
206
206
  // They are used to detect outdated files
207
- // FastlaneRunnerAPIVersion [0.9.94]
207
+ // FastlaneRunnerAPIVersion [0.9.98]
@@ -17,4 +17,4 @@ public class Matchfile: MatchfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.201.0
20
+ // Generated with fastlane 2.203.0
@@ -192,4 +192,4 @@ public extension MatchfileProtocol {
192
192
 
193
193
  // Please don't remove the lines below
194
194
  // They are used to detect outdated files
195
- // FastlaneRunnerAPIVersion [0.9.88]
195
+ // FastlaneRunnerAPIVersion [0.9.92]
@@ -17,4 +17,4 @@ public class Precheckfile: PrecheckfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.201.0
20
+ // Generated with fastlane 2.203.0
@@ -52,4 +52,4 @@ public extension PrecheckfileProtocol {
52
52
 
53
53
  // Please don't remove the lines below
54
54
  // They are used to detect outdated files
55
- // FastlaneRunnerAPIVersion [0.9.87]
55
+ // FastlaneRunnerAPIVersion [0.9.91]
@@ -17,4 +17,4 @@ public class Scanfile: ScanfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.201.0
20
+ // Generated with fastlane 2.203.0
@@ -134,6 +134,9 @@ public protocol ScanfileProtocol: class {
134
134
  /// Generate the json compilation database with clang naming convention (compile_commands.json)
135
135
  var useClangReportName: Bool { get }
136
136
 
137
+ /// Optionally override the per-target setting in the scheme for running tests in parallel. Equivalent to -parallel-testing-enabled
138
+ var parallelTesting: Bool? { get }
139
+
137
140
  /// Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
138
141
  var concurrentWorkers: Int? { get }
139
142
 
@@ -221,7 +224,7 @@ public protocol ScanfileProtocol: class {
221
224
  /// Lets xcodebuild use system's scm configuration
222
225
  var useSystemScm: Bool { get }
223
226
 
224
- /// The number of times a test can fail before scan should stop retrying
227
+ /// The number of times a test can fail
225
228
  var numberOfRetries: Int { get }
226
229
 
227
230
  /// Should this step stop the build if the tests fail? Set this to false if you're using trainer
@@ -273,6 +276,7 @@ public extension ScanfileProtocol {
273
276
  var outputXctestrun: Bool { return false }
274
277
  var resultBundle: Bool { return false }
275
278
  var useClangReportName: Bool { return false }
279
+ var parallelTesting: Bool? { return nil }
276
280
  var concurrentWorkers: Int? { return nil }
277
281
  var maxConcurrentSimulators: Int? { return nil }
278
282
  var disableConcurrentTesting: Bool { return false }
@@ -308,4 +312,4 @@ public extension ScanfileProtocol {
308
312
 
309
313
  // Please don't remove the lines below
310
314
  // They are used to detect outdated files
311
- // FastlaneRunnerAPIVersion [0.9.99]
315
+ // FastlaneRunnerAPIVersion [0.9.103]
@@ -17,4 +17,4 @@ public class Screengrabfile: ScreengrabfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.201.0
20
+ // Generated with fastlane 2.203.0
@@ -96,4 +96,4 @@ public extension ScreengrabfileProtocol {
96
96
 
97
97
  // Please don't remove the lines below
98
98
  // They are used to detect outdated files
99
- // FastlaneRunnerAPIVersion [0.9.89]
99
+ // FastlaneRunnerAPIVersion [0.9.93]
@@ -17,4 +17,4 @@ public class Snapshotfile: SnapshotfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.201.0
20
+ // Generated with fastlane 2.203.0
@@ -204,4 +204,4 @@ public extension SnapshotfileProtocol {
204
204
 
205
205
  // Please don't remove the lines below
206
206
  // They are used to detect outdated files
207
- // FastlaneRunnerAPIVersion [0.9.83]
207
+ // FastlaneRunnerAPIVersion [0.9.87]