fastlane 2.201.1 → 2.204.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +92 -92
  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 +10 -2
  6. data/fastlane/lib/fastlane/actions/trainer.rb +2 -2
  7. data/fastlane/lib/fastlane/actions/verify_build.rb +1 -1
  8. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +1 -1
  9. data/fastlane/lib/fastlane/swift_lane_manager.rb +11 -3
  10. data/fastlane/lib/fastlane/swift_runner_upgrader.rb +55 -1
  11. data/fastlane/lib/fastlane/version.rb +1 -1
  12. data/fastlane/swift/Atomic.swift +150 -0
  13. data/fastlane/swift/Deliverfile.swift +1 -1
  14. data/fastlane/swift/DeliverfileProtocol.swift +2 -2
  15. data/fastlane/swift/Fastlane.swift +197 -161
  16. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +30 -20
  17. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +1 -1
  18. data/fastlane/swift/Gymfile.swift +1 -1
  19. data/fastlane/swift/GymfileProtocol.swift +2 -2
  20. data/fastlane/swift/LaneFileProtocol.swift +1 -1
  21. data/fastlane/swift/Matchfile.swift +1 -1
  22. data/fastlane/swift/MatchfileProtocol.swift +6 -2
  23. data/fastlane/swift/Precheckfile.swift +1 -1
  24. data/fastlane/swift/PrecheckfileProtocol.swift +2 -2
  25. data/fastlane/swift/Runner.swift +9 -1
  26. data/fastlane/swift/Scanfile.swift +1 -1
  27. data/fastlane/swift/ScanfileProtocol.swift +7 -3
  28. data/fastlane/swift/Screengrabfile.swift +1 -1
  29. data/fastlane/swift/ScreengrabfileProtocol.swift +2 -2
  30. data/fastlane/swift/Snapshotfile.swift +1 -1
  31. data/fastlane/swift/SnapshotfileProtocol.swift +2 -2
  32. data/fastlane/swift/SocketClient.swift +5 -1
  33. data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
  34. data/fastlane/swift/formatting/Brewfile.lock.json +19 -19
  35. data/fastlane/swift/upgrade_manifest.json +1 -1
  36. data/fastlane_core/lib/fastlane_core/device_manager.rb +5 -1
  37. data/match/lib/match/nuke.rb +33 -9
  38. data/match/lib/match/options.rb +5 -0
  39. data/match/lib/match/storage/s3_storage.rb +3 -3
  40. data/pilot/lib/pilot/build_manager.rb +17 -7
  41. data/pilot/lib/pilot/options.rb +6 -1
  42. data/scan/lib/scan/options.rb +6 -1
  43. data/scan/lib/scan/runner.rb +40 -13
  44. data/scan/lib/scan/test_command_generator.rb +8 -3
  45. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +5 -1
  46. data/spaceship/lib/spaceship/connect_api/models/app.rb +2 -1
  47. metadata +24 -27
  48. data/fastlane/lib/fastlane/actions/.run_tests.rb.swp +0 -0
  49. data/scan/lib/scan/.error_handler.rb.swp +0 -0
  50. data/scan/lib/scan/.runner.rb.swp +0 -0
  51. data/trainer/lib/trainer/.options.rb.swp +0 -0
@@ -6645,6 +6645,7 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
6645
6645
  - includeAllCertificates: Include all matching certificates in the provisioning profile. Works only for the 'development' provisioning profile type
6646
6646
  - forceForNewCertificates: Renew the provisioning profiles if the device count on the developer portal has changed. Works only for the 'development' provisioning profile type. Requires 'include_all_certificates' option to be 'true'
6647
6647
  - skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
6648
+ - safeRemoveCerts: Remove certs from repository during nuke without revoking them on the developer portal
6648
6649
  - skipDocs: Skip generation of a README.md for the created git repository
6649
6650
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
6650
6651
  - deriveCatalystAppIdentifier: Enable this if you have the Mac Catalyst capability enabled and your project was created with Xcode 11.3 or earlier. Prepends 'maccatalyst.' to the app identifier for the provisioning profile mapping
@@ -6694,6 +6695,7 @@ public func match(type: String = matchfile.type,
6694
6695
  includeAllCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.includeAllCertificates),
6695
6696
  forceForNewCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.forceForNewCertificates),
6696
6697
  skipConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.skipConfirmation),
6698
+ safeRemoveCerts: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.safeRemoveCerts),
6697
6699
  skipDocs: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.skipDocs),
6698
6700
  platform: String = matchfile.platform,
6699
6701
  deriveCatalystAppIdentifier: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.deriveCatalystAppIdentifier),
@@ -6741,6 +6743,7 @@ public func match(type: String = matchfile.type,
6741
6743
  let includeAllCertificatesArg = includeAllCertificates.asRubyArgument(name: "include_all_certificates", type: nil)
6742
6744
  let forceForNewCertificatesArg = forceForNewCertificates.asRubyArgument(name: "force_for_new_certificates", type: nil)
6743
6745
  let skipConfirmationArg = skipConfirmation.asRubyArgument(name: "skip_confirmation", type: nil)
6746
+ let safeRemoveCertsArg = safeRemoveCerts.asRubyArgument(name: "safe_remove_certs", type: nil)
6744
6747
  let skipDocsArg = skipDocs.asRubyArgument(name: "skip_docs", type: nil)
6745
6748
  let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
6746
6749
  let deriveCatalystAppIdentifierArg = deriveCatalystAppIdentifier.asRubyArgument(name: "derive_catalyst_app_identifier", type: nil)
@@ -6787,6 +6790,7 @@ public func match(type: String = matchfile.type,
6787
6790
  includeAllCertificatesArg,
6788
6791
  forceForNewCertificatesArg,
6789
6792
  skipConfirmationArg,
6793
+ safeRemoveCertsArg,
6790
6794
  skipDocsArg,
6791
6795
  platformArg,
6792
6796
  deriveCatalystAppIdentifierArg,
@@ -6844,6 +6848,7 @@ public func match(type: String = matchfile.type,
6844
6848
  - includeAllCertificates: Include all matching certificates in the provisioning profile. Works only for the 'development' provisioning profile type
6845
6849
  - forceForNewCertificates: Renew the provisioning profiles if the device count on the developer portal has changed. Works only for the 'development' provisioning profile type. Requires 'include_all_certificates' option to be 'true'
6846
6850
  - skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
6851
+ - safeRemoveCerts: Remove certs from repository during nuke without revoking them on the developer portal
6847
6852
  - skipDocs: Skip generation of a README.md for the created git repository
6848
6853
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
6849
6854
  - deriveCatalystAppIdentifier: Enable this if you have the Mac Catalyst capability enabled and your project was created with Xcode 11.3 or earlier. Prepends 'maccatalyst.' to the app identifier for the provisioning profile mapping
@@ -6897,6 +6902,7 @@ public func matchNuke(type: String = "development",
6897
6902
  includeAllCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6898
6903
  forceForNewCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6899
6904
  skipConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6905
+ safeRemoveCerts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6900
6906
  skipDocs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6901
6907
  platform: String = "ios",
6902
6908
  deriveCatalystAppIdentifier: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -6944,6 +6950,7 @@ public func matchNuke(type: String = "development",
6944
6950
  let includeAllCertificatesArg = includeAllCertificates.asRubyArgument(name: "include_all_certificates", type: nil)
6945
6951
  let forceForNewCertificatesArg = forceForNewCertificates.asRubyArgument(name: "force_for_new_certificates", type: nil)
6946
6952
  let skipConfirmationArg = skipConfirmation.asRubyArgument(name: "skip_confirmation", type: nil)
6953
+ let safeRemoveCertsArg = safeRemoveCerts.asRubyArgument(name: "safe_remove_certs", type: nil)
6947
6954
  let skipDocsArg = skipDocs.asRubyArgument(name: "skip_docs", type: nil)
6948
6955
  let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
6949
6956
  let deriveCatalystAppIdentifierArg = deriveCatalystAppIdentifier.asRubyArgument(name: "derive_catalyst_app_identifier", type: nil)
@@ -6990,6 +6997,7 @@ public func matchNuke(type: String = "development",
6990
6997
  includeAllCertificatesArg,
6991
6998
  forceForNewCertificatesArg,
6992
6999
  skipConfirmationArg,
7000
+ safeRemoveCertsArg,
6993
7001
  skipDocsArg,
6994
7002
  platformArg,
6995
7003
  deriveCatalystAppIdentifierArg,
@@ -7562,6 +7570,7 @@ public func pem(platform: String = "ios",
7562
7570
  - waitProcessingTimeoutDuration: Timeout duration in seconds to wait for App Store Connect processing. If set, after exceeding timeout duration, this will `force stop` to wait for App Store Connect processing and exit with exception
7563
7571
  - waitForUploadedBuild: **DEPRECATED!** No longer needed with the transition over to the App Store Connect API - Use version info from uploaded ipa file to determine what build to use for distribution. If set to false, latest processing or any latest build will be used
7564
7572
  - rejectBuildWaitingForReview: Expire previous if it's 'waiting for review'
7573
+ - submitBetaReview: Send the build for a beta review
7565
7574
 
7566
7575
  More details can be found on https://docs.fastlane.tools/actions/pilot/.
7567
7576
  This integration will only do the TestFlight upload.
@@ -7603,7 +7612,8 @@ public func pilot(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(ni
7603
7612
  waitProcessingInterval: Int = 30,
7604
7613
  waitProcessingTimeoutDuration: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
7605
7614
  waitForUploadedBuild: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7606
- rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false))
7615
+ rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7616
+ submitBetaReview: OptionalConfigValue<Bool> = .fastlaneDefault(true))
7607
7617
  {
7608
7618
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
7609
7619
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -7643,6 +7653,7 @@ public func pilot(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(ni
7643
7653
  let waitProcessingTimeoutDurationArg = waitProcessingTimeoutDuration.asRubyArgument(name: "wait_processing_timeout_duration", type: nil)
7644
7654
  let waitForUploadedBuildArg = waitForUploadedBuild.asRubyArgument(name: "wait_for_uploaded_build", type: nil)
7645
7655
  let rejectBuildWaitingForReviewArg = rejectBuildWaitingForReview.asRubyArgument(name: "reject_build_waiting_for_review", type: nil)
7656
+ let submitBetaReviewArg = submitBetaReview.asRubyArgument(name: "submit_beta_review", type: nil)
7646
7657
  let array: [RubyCommand.Argument?] = [apiKeyPathArg,
7647
7658
  apiKeyArg,
7648
7659
  usernameArg,
@@ -7680,7 +7691,8 @@ public func pilot(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(ni
7680
7691
  waitProcessingIntervalArg,
7681
7692
  waitProcessingTimeoutDurationArg,
7682
7693
  waitForUploadedBuildArg,
7683
- rejectBuildWaitingForReviewArg]
7694
+ rejectBuildWaitingForReviewArg,
7695
+ submitBetaReviewArg]
7684
7696
  let args: [RubyCommand.Argument] = array
7685
7697
  .filter { $0?.value != nil }
7686
7698
  .compactMap { $0 }
@@ -8600,6 +8612,7 @@ public func rubyVersion() {
8600
8612
  - outputXctestrun: Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?
8601
8613
  - resultBundle: Should an Xcode result bundle be generated in the output directory
8602
8614
  - useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
8615
+ - parallelTesting: Optionally override the per-target setting in the scheme for running tests in parallel. Equivalent to -parallel-testing-enabled
8603
8616
  - concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
8604
8617
  - maxConcurrentSimulators: Constrain the number of simulator devices on which to test concurrently. Equivalent to -maximum-concurrent-test-simulator-destinations
8605
8618
  - 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 +8642,89 @@ public func rubyVersion() {
8629
8642
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
8630
8643
  - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
8631
8644
  - useSystemScm: Lets xcodebuild use system's scm configuration
8632
- - numberOfRetries: The number of times a test can fail before scan should stop retrying
8645
+ - numberOfRetries: The number of times a test can fail
8633
8646
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
8634
8647
 
8648
+ - 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
8649
+
8635
8650
  More information: https://docs.fastlane.tools/actions/scan/
8636
8651
  */
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))
8652
+ @discardableResult public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8653
+ project: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8654
+ packagePath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8655
+ scheme: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8656
+ device: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8657
+ devices: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
8658
+ skipDetectDevices: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8659
+ ensureDevicesFound: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8660
+ forceQuitSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8661
+ resetSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8662
+ disableSlideToType: OptionalConfigValue<Bool> = .fastlaneDefault(true),
8663
+ prelaunchSimulator: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8664
+ reinstallApp: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8665
+ appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8666
+ onlyTesting: Any? = nil,
8667
+ skipTesting: Any? = nil,
8668
+ testplan: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8669
+ onlyTestConfigurations: Any? = nil,
8670
+ skipTestConfigurations: Any? = nil,
8671
+ xctestrun: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8672
+ toolchain: Any? = nil,
8673
+ clean: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8674
+ codeCoverage: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8675
+ addressSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8676
+ threadSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8677
+ openReport: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8678
+ outputDirectory: String = "./test_output",
8679
+ outputStyle: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8680
+ outputTypes: String = "html,junit",
8681
+ outputFiles: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8682
+ buildlogPath: String = "~/Library/Logs/scan",
8683
+ includeSimulatorLogs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8684
+ suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8685
+ xcodebuildFormatter: String = "xcbeautify",
8686
+ outputRemoveRetryAttempts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8687
+ disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8688
+ formatter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8689
+ xcprettyFormatter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8690
+ xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8691
+ derivedDataPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8692
+ shouldZipBuildProducts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8693
+ outputXctestrun: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8694
+ resultBundle: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8695
+ useClangReportName: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8696
+ parallelTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8697
+ concurrentWorkers: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
8698
+ maxConcurrentSimulators: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
8699
+ disableConcurrentTesting: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8700
+ skipBuild: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8701
+ testWithoutBuilding: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8702
+ buildForTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
8703
+ sdk: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8704
+ configuration: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8705
+ xcargs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8706
+ xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8707
+ appName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8708
+ deploymentTargetVersion: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8709
+ slackUrl: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8710
+ slackChannel: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8711
+ slackMessage: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8712
+ slackUseWebhookConfiguredUsernameAndIcon: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8713
+ slackUsername: String = "fastlane",
8714
+ slackIconUrl: String = "https://fastlane.tools/assets/img/fastlane_icon.png",
8715
+ skipSlack: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8716
+ slackOnlyOnFailure: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8717
+ slackDefaultPayloads: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
8718
+ destination: Any? = nil,
8719
+ catalystPlatform: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8720
+ customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8721
+ xcodebuildCommand: String = "env NSUnbufferedIO=YES xcodebuild",
8722
+ clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8723
+ skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8724
+ disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8725
+ useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(false),
8726
+ numberOfRetries: Int = 0,
8727
+ failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(true)) -> [String: Any]
8712
8728
  {
8713
8729
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
8714
8730
  let projectArg = project.asRubyArgument(name: "project", type: nil)
@@ -8754,6 +8770,7 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8754
8770
  let outputXctestrunArg = outputXctestrun.asRubyArgument(name: "output_xctestrun", type: nil)
8755
8771
  let resultBundleArg = resultBundle.asRubyArgument(name: "result_bundle", type: nil)
8756
8772
  let useClangReportNameArg = useClangReportName.asRubyArgument(name: "use_clang_report_name", type: nil)
8773
+ let parallelTestingArg = parallelTesting.asRubyArgument(name: "parallel_testing", type: nil)
8757
8774
  let concurrentWorkersArg = concurrentWorkers.asRubyArgument(name: "concurrent_workers", type: nil)
8758
8775
  let maxConcurrentSimulatorsArg = maxConcurrentSimulators.asRubyArgument(name: "max_concurrent_simulators", type: nil)
8759
8776
  let disableConcurrentTestingArg = disableConcurrentTesting.asRubyArgument(name: "disable_concurrent_testing", type: nil)
@@ -8829,6 +8846,7 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8829
8846
  outputXctestrunArg,
8830
8847
  resultBundleArg,
8831
8848
  useClangReportNameArg,
8849
+ parallelTestingArg,
8832
8850
  concurrentWorkersArg,
8833
8851
  maxConcurrentSimulatorsArg,
8834
8852
  disableConcurrentTestingArg,
@@ -8864,7 +8882,7 @@ public func runTests(workspace: OptionalConfigValue<String?> = .fastlaneDefault(
8864
8882
  .filter { $0?.value != nil }
8865
8883
  .compactMap { $0 }
8866
8884
  let command = RubyCommand(commandID: "", methodName: "run_tests", className: nil, args: args)
8867
- _ = runner.executeCommand(command)
8885
+ return parseDictionary(fromString: runner.executeCommand(command))
8868
8886
  }
8869
8887
 
8870
8888
  /**
@@ -9017,6 +9035,7 @@ public func say(text: [String],
9017
9035
  - outputXctestrun: Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?
9018
9036
  - resultBundle: Should an Xcode result bundle be generated in the output directory
9019
9037
  - useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
9038
+ - parallelTesting: Optionally override the per-target setting in the scheme for running tests in parallel. Equivalent to -parallel-testing-enabled
9020
9039
  - concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
9021
9040
  - maxConcurrentSimulators: Constrain the number of simulator devices on which to test concurrently. Equivalent to -maximum-concurrent-test-simulator-destinations
9022
9041
  - 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 +9065,89 @@ public func say(text: [String],
9046
9065
  - skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
9047
9066
  - disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
9048
9067
  - useSystemScm: Lets xcodebuild use system's scm configuration
9049
- - numberOfRetries: The number of times a test can fail before scan should stop retrying
9068
+ - numberOfRetries: The number of times a test can fail
9050
9069
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
9051
9070
 
9071
+ - 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
9072
+
9052
9073
  More information: https://docs.fastlane.tools/actions/scan/
9053
9074
  */
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))
9075
+ @discardableResult public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.workspace),
9076
+ project: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.project),
9077
+ packagePath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.packagePath),
9078
+ scheme: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.scheme),
9079
+ device: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.device),
9080
+ devices: OptionalConfigValue<[String]?> = .fastlaneDefault(scanfile.devices),
9081
+ skipDetectDevices: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipDetectDevices),
9082
+ ensureDevicesFound: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.ensureDevicesFound),
9083
+ forceQuitSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.forceQuitSimulator),
9084
+ resetSimulator: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.resetSimulator),
9085
+ disableSlideToType: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disableSlideToType),
9086
+ prelaunchSimulator: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.prelaunchSimulator),
9087
+ reinstallApp: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.reinstallApp),
9088
+ appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.appIdentifier),
9089
+ onlyTesting: Any? = scanfile.onlyTesting,
9090
+ skipTesting: Any? = scanfile.skipTesting,
9091
+ testplan: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.testplan),
9092
+ onlyTestConfigurations: Any? = scanfile.onlyTestConfigurations,
9093
+ skipTestConfigurations: Any? = scanfile.skipTestConfigurations,
9094
+ xctestrun: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xctestrun),
9095
+ toolchain: Any? = scanfile.toolchain,
9096
+ clean: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.clean),
9097
+ codeCoverage: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.codeCoverage),
9098
+ addressSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.addressSanitizer),
9099
+ threadSanitizer: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.threadSanitizer),
9100
+ openReport: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.openReport),
9101
+ outputDirectory: String = scanfile.outputDirectory,
9102
+ outputStyle: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.outputStyle),
9103
+ outputTypes: String = scanfile.outputTypes,
9104
+ outputFiles: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.outputFiles),
9105
+ buildlogPath: String = scanfile.buildlogPath,
9106
+ includeSimulatorLogs: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.includeSimulatorLogs),
9107
+ suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.suppressXcodeOutput),
9108
+ xcodebuildFormatter: String = scanfile.xcodebuildFormatter,
9109
+ outputRemoveRetryAttempts: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.outputRemoveRetryAttempts),
9110
+ disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.disableXcpretty),
9111
+ formatter: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.formatter),
9112
+ xcprettyFormatter: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcprettyFormatter),
9113
+ xcprettyArgs: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcprettyArgs),
9114
+ derivedDataPath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.derivedDataPath),
9115
+ shouldZipBuildProducts: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.shouldZipBuildProducts),
9116
+ outputXctestrun: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.outputXctestrun),
9117
+ resultBundle: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.resultBundle),
9118
+ useClangReportName: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.useClangReportName),
9119
+ parallelTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.parallelTesting),
9120
+ concurrentWorkers: OptionalConfigValue<Int?> = .fastlaneDefault(scanfile.concurrentWorkers),
9121
+ maxConcurrentSimulators: OptionalConfigValue<Int?> = .fastlaneDefault(scanfile.maxConcurrentSimulators),
9122
+ disableConcurrentTesting: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disableConcurrentTesting),
9123
+ skipBuild: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipBuild),
9124
+ testWithoutBuilding: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.testWithoutBuilding),
9125
+ buildForTesting: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.buildForTesting),
9126
+ sdk: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.sdk),
9127
+ configuration: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.configuration),
9128
+ xcargs: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcargs),
9129
+ xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcconfig),
9130
+ appName: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.appName),
9131
+ deploymentTargetVersion: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.deploymentTargetVersion),
9132
+ slackUrl: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackUrl),
9133
+ slackChannel: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackChannel),
9134
+ slackMessage: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.slackMessage),
9135
+ slackUseWebhookConfiguredUsernameAndIcon: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.slackUseWebhookConfiguredUsernameAndIcon),
9136
+ slackUsername: String = scanfile.slackUsername,
9137
+ slackIconUrl: String = scanfile.slackIconUrl,
9138
+ skipSlack: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipSlack),
9139
+ slackOnlyOnFailure: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.slackOnlyOnFailure),
9140
+ slackDefaultPayloads: OptionalConfigValue<[String]?> = .fastlaneDefault(scanfile.slackDefaultPayloads),
9141
+ destination: Any? = scanfile.destination,
9142
+ catalystPlatform: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.catalystPlatform),
9143
+ customReportFileName: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.customReportFileName),
9144
+ xcodebuildCommand: String = scanfile.xcodebuildCommand,
9145
+ clonedSourcePackagesPath: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.clonedSourcePackagesPath),
9146
+ skipPackageDependenciesResolution: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.skipPackageDependenciesResolution),
9147
+ disablePackageAutomaticUpdates: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.disablePackageAutomaticUpdates),
9148
+ useSystemScm: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.useSystemScm),
9149
+ numberOfRetries: Int = scanfile.numberOfRetries,
9150
+ failBuild: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.failBuild)) -> [String: Any]
9129
9151
  {
9130
9152
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
9131
9153
  let projectArg = project.asRubyArgument(name: "project", type: nil)
@@ -9171,6 +9193,7 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9171
9193
  let outputXctestrunArg = outputXctestrun.asRubyArgument(name: "output_xctestrun", type: nil)
9172
9194
  let resultBundleArg = resultBundle.asRubyArgument(name: "result_bundle", type: nil)
9173
9195
  let useClangReportNameArg = useClangReportName.asRubyArgument(name: "use_clang_report_name", type: nil)
9196
+ let parallelTestingArg = parallelTesting.asRubyArgument(name: "parallel_testing", type: nil)
9174
9197
  let concurrentWorkersArg = concurrentWorkers.asRubyArgument(name: "concurrent_workers", type: nil)
9175
9198
  let maxConcurrentSimulatorsArg = maxConcurrentSimulators.asRubyArgument(name: "max_concurrent_simulators", type: nil)
9176
9199
  let disableConcurrentTestingArg = disableConcurrentTesting.asRubyArgument(name: "disable_concurrent_testing", type: nil)
@@ -9246,6 +9269,7 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9246
9269
  outputXctestrunArg,
9247
9270
  resultBundleArg,
9248
9271
  useClangReportNameArg,
9272
+ parallelTestingArg,
9249
9273
  concurrentWorkersArg,
9250
9274
  maxConcurrentSimulatorsArg,
9251
9275
  disableConcurrentTestingArg,
@@ -9281,7 +9305,7 @@ public func scan(workspace: OptionalConfigValue<String?> = .fastlaneDefault(scan
9281
9305
  .filter { $0?.value != nil }
9282
9306
  .compactMap { $0 }
9283
9307
  let command = RubyCommand(commandID: "", methodName: "scan", className: nil, args: args)
9284
- _ = runner.executeCommand(command)
9308
+ return parseDictionary(fromString: runner.executeCommand(command))
9285
9309
  }
9286
9310
 
9287
9311
  /**
@@ -11014,6 +11038,7 @@ public func swiftlint(mode: String = "lint",
11014
11038
  - includeAllCertificates: Include all matching certificates in the provisioning profile. Works only for the 'development' provisioning profile type
11015
11039
  - forceForNewCertificates: Renew the provisioning profiles if the device count on the developer portal has changed. Works only for the 'development' provisioning profile type. Requires 'include_all_certificates' option to be 'true'
11016
11040
  - skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
11041
+ - safeRemoveCerts: Remove certs from repository during nuke without revoking them on the developer portal
11017
11042
  - skipDocs: Skip generation of a README.md for the created git repository
11018
11043
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
11019
11044
  - deriveCatalystAppIdentifier: Enable this if you have the Mac Catalyst capability enabled and your project was created with Xcode 11.3 or earlier. Prepends 'maccatalyst.' to the app identifier for the provisioning profile mapping
@@ -11063,6 +11088,7 @@ public func syncCodeSigning(type: String = "development",
11063
11088
  includeAllCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11064
11089
  forceForNewCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11065
11090
  skipConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11091
+ safeRemoveCerts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11066
11092
  skipDocs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11067
11093
  platform: String = "ios",
11068
11094
  deriveCatalystAppIdentifier: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -11110,6 +11136,7 @@ public func syncCodeSigning(type: String = "development",
11110
11136
  let includeAllCertificatesArg = includeAllCertificates.asRubyArgument(name: "include_all_certificates", type: nil)
11111
11137
  let forceForNewCertificatesArg = forceForNewCertificates.asRubyArgument(name: "force_for_new_certificates", type: nil)
11112
11138
  let skipConfirmationArg = skipConfirmation.asRubyArgument(name: "skip_confirmation", type: nil)
11139
+ let safeRemoveCertsArg = safeRemoveCerts.asRubyArgument(name: "safe_remove_certs", type: nil)
11113
11140
  let skipDocsArg = skipDocs.asRubyArgument(name: "skip_docs", type: nil)
11114
11141
  let platformArg = RubyCommand.Argument(name: "platform", value: platform, type: nil)
11115
11142
  let deriveCatalystAppIdentifierArg = deriveCatalystAppIdentifier.asRubyArgument(name: "derive_catalyst_app_identifier", type: nil)
@@ -11156,6 +11183,7 @@ public func syncCodeSigning(type: String = "development",
11156
11183
  includeAllCertificatesArg,
11157
11184
  forceForNewCertificatesArg,
11158
11185
  skipConfirmationArg,
11186
+ safeRemoveCertsArg,
11159
11187
  skipDocsArg,
11160
11188
  platformArg,
11161
11189
  deriveCatalystAppIdentifierArg,
@@ -11300,6 +11328,7 @@ public func testfairy(apiKey: String,
11300
11328
  - waitProcessingTimeoutDuration: Timeout duration in seconds to wait for App Store Connect processing. If set, after exceeding timeout duration, this will `force stop` to wait for App Store Connect processing and exit with exception
11301
11329
  - waitForUploadedBuild: **DEPRECATED!** No longer needed with the transition over to the App Store Connect API - Use version info from uploaded ipa file to determine what build to use for distribution. If set to false, latest processing or any latest build will be used
11302
11330
  - rejectBuildWaitingForReview: Expire previous if it's 'waiting for review'
11331
+ - submitBetaReview: Send the build for a beta review
11303
11332
 
11304
11333
  More details can be found on https://docs.fastlane.tools/actions/pilot/.
11305
11334
  This integration will only do the TestFlight upload.
@@ -11341,7 +11370,8 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11341
11370
  waitProcessingInterval: Int = 30,
11342
11371
  waitProcessingTimeoutDuration: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
11343
11372
  waitForUploadedBuild: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11344
- rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false))
11373
+ rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
11374
+ submitBetaReview: OptionalConfigValue<Bool> = .fastlaneDefault(true))
11345
11375
  {
11346
11376
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
11347
11377
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -11381,6 +11411,7 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11381
11411
  let waitProcessingTimeoutDurationArg = waitProcessingTimeoutDuration.asRubyArgument(name: "wait_processing_timeout_duration", type: nil)
11382
11412
  let waitForUploadedBuildArg = waitForUploadedBuild.asRubyArgument(name: "wait_for_uploaded_build", type: nil)
11383
11413
  let rejectBuildWaitingForReviewArg = rejectBuildWaitingForReview.asRubyArgument(name: "reject_build_waiting_for_review", type: nil)
11414
+ let submitBetaReviewArg = submitBetaReview.asRubyArgument(name: "submit_beta_review", type: nil)
11384
11415
  let array: [RubyCommand.Argument?] = [apiKeyPathArg,
11385
11416
  apiKeyArg,
11386
11417
  usernameArg,
@@ -11418,7 +11449,8 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11418
11449
  waitProcessingIntervalArg,
11419
11450
  waitProcessingTimeoutDurationArg,
11420
11451
  waitForUploadedBuildArg,
11421
- rejectBuildWaitingForReviewArg]
11452
+ rejectBuildWaitingForReviewArg,
11453
+ submitBetaReviewArg]
11422
11454
  let args: [RubyCommand.Argument] = array
11423
11455
  .filter { $0?.value != nil }
11424
11456
  .compactMap { $0 }
@@ -12695,6 +12727,7 @@ public func uploadToPlayStoreInternalAppSharing(packageName: String,
12695
12727
  - waitProcessingTimeoutDuration: Timeout duration in seconds to wait for App Store Connect processing. If set, after exceeding timeout duration, this will `force stop` to wait for App Store Connect processing and exit with exception
12696
12728
  - waitForUploadedBuild: **DEPRECATED!** No longer needed with the transition over to the App Store Connect API - Use version info from uploaded ipa file to determine what build to use for distribution. If set to false, latest processing or any latest build will be used
12697
12729
  - rejectBuildWaitingForReview: Expire previous if it's 'waiting for review'
12730
+ - submitBetaReview: Send the build for a beta review
12698
12731
 
12699
12732
  More details can be found on https://docs.fastlane.tools/actions/pilot/.
12700
12733
  This integration will only do the TestFlight upload.
@@ -12736,7 +12769,8 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
12736
12769
  waitProcessingInterval: Int = 30,
12737
12770
  waitProcessingTimeoutDuration: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
12738
12771
  waitForUploadedBuild: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12739
- rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false))
12772
+ rejectBuildWaitingForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12773
+ submitBetaReview: OptionalConfigValue<Bool> = .fastlaneDefault(true))
12740
12774
  {
12741
12775
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
12742
12776
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
@@ -12776,6 +12810,7 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
12776
12810
  let waitProcessingTimeoutDurationArg = waitProcessingTimeoutDuration.asRubyArgument(name: "wait_processing_timeout_duration", type: nil)
12777
12811
  let waitForUploadedBuildArg = waitForUploadedBuild.asRubyArgument(name: "wait_for_uploaded_build", type: nil)
12778
12812
  let rejectBuildWaitingForReviewArg = rejectBuildWaitingForReview.asRubyArgument(name: "reject_build_waiting_for_review", type: nil)
12813
+ let submitBetaReviewArg = submitBetaReview.asRubyArgument(name: "submit_beta_review", type: nil)
12779
12814
  let array: [RubyCommand.Argument?] = [apiKeyPathArg,
12780
12815
  apiKeyArg,
12781
12816
  usernameArg,
@@ -12813,7 +12848,8 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
12813
12848
  waitProcessingIntervalArg,
12814
12849
  waitProcessingTimeoutDurationArg,
12815
12850
  waitForUploadedBuildArg,
12816
- rejectBuildWaitingForReviewArg]
12851
+ rejectBuildWaitingForReviewArg,
12852
+ submitBetaReviewArg]
12817
12853
  let args: [RubyCommand.Argument] = array
12818
12854
  .filter { $0?.value != nil }
12819
12855
  .compactMap { $0 }
@@ -13394,4 +13430,4 @@ public let snapshotfile: Snapshotfile = .init()
13394
13430
 
13395
13431
  // Please don't remove the lines below
13396
13432
  // They are used to detect outdated files
13397
- // FastlaneRunnerAPIVersion [0.9.145]
13433
+ // FastlaneRunnerAPIVersion [0.9.149]