From ec7c53bf15612793b09179ee9439644ef5b5a0a8 Mon Sep 17 00:00:00 2001 From: Bram Schulting Date: Fri, 24 Nov 2023 11:59:45 +0100 Subject: [PATCH 1/3] Add parallel option to spm action --- fastlane/lib/fastlane/actions/spm.rb | 6 ++++ fastlane/spec/actions_specs/spm_spec.rb | 42 +++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/fastlane/lib/fastlane/actions/spm.rb b/fastlane/lib/fastlane/actions/spm.rb index 414e7010deb..c8ce63ea504 100644 --- a/fastlane/lib/fastlane/actions/spm.rb +++ b/fastlane/lib/fastlane/actions/spm.rb @@ -12,6 +12,7 @@ def self.run(params) cmd << "--verbose" if params[:verbose] cmd << params[:command] if package_commands.include?(params[:command]) cmd << "--enable-code-coverage" if params[:enable_code_coverage] && (params[:command] == 'generate-xcodeproj' || params[:command] == 'test') + cmd << "--parallel" if params[:parallel] && params[:command] == 'test' if params[:xcconfig] cmd << "--xcconfig-overrides #{params[:xcconfig]}" end @@ -50,6 +51,11 @@ def self.available_options description: "Enables code coverage for the generated Xcode project when using the 'generate-xcodeproj' and the 'test' command", type: Boolean, optional: true), + FastlaneCore::ConfigItem.new(key: :parallel, + env_name: "FL_SPM_PARALLEL", + description: "Enables running tests in parallel when using the 'test' command", + type: Boolean, + optional: true), FastlaneCore::ConfigItem.new(key: :build_path, env_name: "FL_SPM_BUILD_PATH", description: "Specify build/cache directory [default: ./.build]", diff --git a/fastlane/spec/actions_specs/spm_spec.rb b/fastlane/spec/actions_specs/spm_spec.rb index 498b600d2d2..af1d135d754 100644 --- a/fastlane/spec/actions_specs/spm_spec.rb +++ b/fastlane/spec/actions_specs/spm_spec.rb @@ -186,6 +186,48 @@ expect(result).to eq("swift test") end + + it "sets --parallel to true for test" do + result = Fastlane::FastFile.new.parse("lane :test do + spm( + command: 'test', + parallel: true + ) + end").runner.execute(:test) + + expect(result).to eq("swift test --parallel") + end + + it "sets --parellel to false for test" do + result = Fastlane::FastFile.new.parse("lane :test do + spm( + command: 'test', + parallel: false + ) + end").runner.execute(:test) + + expect(result).to eq("swift test") + end + + it "does not add --parellel by default" do + result = Fastlane::FastFile.new.parse("lane :test do + spm( + command: 'test' + ) + end").runner.execute(:test) + + expect(result).to eq("swift test") + end + + it "does not add --parellel for irrelevant commands" do + result = Fastlane::FastFile.new.parse("lane :test do + spm( + parallel: true + ) + end").runner.execute(:test) + + expect(result).to eq("swift build") + end end context "when command is package related" do From 830df374eb416995b74e2aa3ed8825e215c7e520 Mon Sep 17 00:00:00 2001 From: Bram Schulting Date: Tue, 12 Dec 2023 09:20:31 +0100 Subject: [PATCH 2/3] Add parallel test example --- fastlane/lib/fastlane/actions/spm.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fastlane/lib/fastlane/actions/spm.rb b/fastlane/lib/fastlane/actions/spm.rb index c8ce63ea504..5357ceb3876 100644 --- a/fastlane/lib/fastlane/actions/spm.rb +++ b/fastlane/lib/fastlane/actions/spm.rb @@ -122,6 +122,10 @@ def self.example_code 'spm( command: "generate-xcodeproj", xcconfig: "Package.xcconfig" + )', + 'spm( + command: "test", + parallel: true )' ] end From 9bb3aa62d80ca3a20530235ebe734e00b215bd84 Mon Sep 17 00:00:00 2001 From: Roger Oba Date: Tue, 12 Dec 2023 21:54:48 -0300 Subject: [PATCH 3/3] Change boolean option from optional to default false. --- fastlane/lib/fastlane/actions/spm.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/lib/fastlane/actions/spm.rb b/fastlane/lib/fastlane/actions/spm.rb index 5357ceb3876..ee8df4a0194 100644 --- a/fastlane/lib/fastlane/actions/spm.rb +++ b/fastlane/lib/fastlane/actions/spm.rb @@ -55,7 +55,7 @@ def self.available_options env_name: "FL_SPM_PARALLEL", description: "Enables running tests in parallel when using the 'test' command", type: Boolean, - optional: true), + default_value: false), FastlaneCore::ConfigItem.new(key: :build_path, env_name: "FL_SPM_BUILD_PATH", description: "Specify build/cache directory [default: ./.build]",