From 47c128c1d2722c29cb77ca663b1000c86f6ed7c9 Mon Sep 17 00:00:00 2001 From: Manish Rathi Date: Thu, 8 Apr 2021 20:34:21 +0200 Subject: [PATCH 1/3] [action][ensure_env_vars] efficiency improvement --- fastlane/lib/fastlane/actions/ensure_env_vars.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/fastlane/lib/fastlane/actions/ensure_env_vars.rb b/fastlane/lib/fastlane/actions/ensure_env_vars.rb index 44112ca4b1d..9841591b7c6 100644 --- a/fastlane/lib/fastlane/actions/ensure_env_vars.rb +++ b/fastlane/lib/fastlane/actions/ensure_env_vars.rb @@ -3,15 +3,16 @@ module Actions class EnsureEnvVarsAction < Action def self.run(params) variables = params[:env_vars] + missing_variables = [] variables.each do |variable| - next unless ENV[variable].to_s.strip.empty? - - UI.user_error!("Missing environment variable '#{variable}'") + missing_variables << variable if ENV[variable].to_s.strip.empty? end - is_one = variables.length == 1 + is_one = missing_variables.length == 1 + UI.user_error!("Missing environment variable#{is_one ? '' : 's'} '#{missing_variables.join('\', \'')}'") unless missing_variables.empty? + is_one = variables.length == 1 UI.success("Environment variable#{is_one ? '' : 's'} '#{variables.join('\', \'')}' #{is_one ? 'is' : 'are'} set!") end From a04532b4df58b3744e7b5ea84f978cbe6083cfcf Mon Sep 17 00:00:00 2001 From: Manish Rathi Date: Fri, 9 Apr 2021 09:35:23 +0200 Subject: [PATCH 2/3] [action][ensure_env_vars] efficiency improvement (clean-up + Unit-tests) --- fastlane/lib/fastlane/actions/ensure_env_vars.rb | 6 +----- fastlane/spec/actions_specs/ensure_env_vars_spec.rb | 12 ++++++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/fastlane/lib/fastlane/actions/ensure_env_vars.rb b/fastlane/lib/fastlane/actions/ensure_env_vars.rb index 9841591b7c6..7b5e6a228a4 100644 --- a/fastlane/lib/fastlane/actions/ensure_env_vars.rb +++ b/fastlane/lib/fastlane/actions/ensure_env_vars.rb @@ -3,11 +3,7 @@ module Actions class EnsureEnvVarsAction < Action def self.run(params) variables = params[:env_vars] - missing_variables = [] - - variables.each do |variable| - missing_variables << variable if ENV[variable].to_s.strip.empty? - end + missing_variables = variables.select { |variable| ENV[variable].to_s.strip.empty? } is_one = missing_variables.length == 1 UI.user_error!("Missing environment variable#{is_one ? '' : 's'} '#{missing_variables.join('\', \'')}'") unless missing_variables.empty? diff --git a/fastlane/spec/actions_specs/ensure_env_vars_spec.rb b/fastlane/spec/actions_specs/ensure_env_vars_spec.rb index 11914f0df9e..ffc987a927d 100644 --- a/fastlane/spec/actions_specs/ensure_env_vars_spec.rb +++ b/fastlane/spec/actions_specs/ensure_env_vars_spec.rb @@ -46,6 +46,18 @@ end end + context 'and multiple env vars are not set' do + it 'outputs error message' do + expect do + Fastlane::FastFile.new.parse('lane :test do + ensure_env_vars(env_vars: [\'MISSING_FIRST\', \'MISSING_SECOND\']) + end').runner.execute(:test) + end.to raise_error(FastlaneCore::Interface::FastlaneError) do |error| + expect(error.message).to eq('Missing environment variables \'MISSING_FIRST\', \'MISSING_SECOND\'') + end + end + end + context 'and env var is empty' do before :each do allow(ENV).to receive(:[]).and_return(' ') From 4f03548e0921b041548297c2d61f1cfd4975c11a Mon Sep 17 00:00:00 2001 From: Manish Rathi Date: Sun, 11 Apr 2021 08:10:09 +0200 Subject: [PATCH 3/3] PR review fix --- fastlane/lib/fastlane/actions/ensure_env_vars.rb | 3 +-- fastlane/spec/actions_specs/ensure_env_vars_spec.rb | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/fastlane/lib/fastlane/actions/ensure_env_vars.rb b/fastlane/lib/fastlane/actions/ensure_env_vars.rb index 7b5e6a228a4..e2253bac9dd 100644 --- a/fastlane/lib/fastlane/actions/ensure_env_vars.rb +++ b/fastlane/lib/fastlane/actions/ensure_env_vars.rb @@ -5,8 +5,7 @@ def self.run(params) variables = params[:env_vars] missing_variables = variables.select { |variable| ENV[variable].to_s.strip.empty? } - is_one = missing_variables.length == 1 - UI.user_error!("Missing environment variable#{is_one ? '' : 's'} '#{missing_variables.join('\', \'')}'") unless missing_variables.empty? + UI.user_error!("Missing environment variable(s) '#{missing_variables.join('\', \'')}'") unless missing_variables.empty? is_one = variables.length == 1 UI.success("Environment variable#{is_one ? '' : 's'} '#{variables.join('\', \'')}' #{is_one ? 'is' : 'are'} set!") diff --git a/fastlane/spec/actions_specs/ensure_env_vars_spec.rb b/fastlane/spec/actions_specs/ensure_env_vars_spec.rb index ffc987a927d..740753174be 100644 --- a/fastlane/spec/actions_specs/ensure_env_vars_spec.rb +++ b/fastlane/spec/actions_specs/ensure_env_vars_spec.rb @@ -41,7 +41,7 @@ ensure_env_vars(env_vars: [\'MISSING\']) end').runner.execute(:test) end.to raise_error(FastlaneCore::Interface::FastlaneError) do |error| - expect(error.message).to eq('Missing environment variable \'MISSING\'') + expect(error.message).to eq('Missing environment variable(s) \'MISSING\'') end end end @@ -53,7 +53,7 @@ ensure_env_vars(env_vars: [\'MISSING_FIRST\', \'MISSING_SECOND\']) end').runner.execute(:test) end.to raise_error(FastlaneCore::Interface::FastlaneError) do |error| - expect(error.message).to eq('Missing environment variables \'MISSING_FIRST\', \'MISSING_SECOND\'') + expect(error.message).to eq('Missing environment variable(s) \'MISSING_FIRST\', \'MISSING_SECOND\'') end end end @@ -69,7 +69,7 @@ ensure_env_vars(env_vars: [\'MISSING\']) end').runner.execute(:test) end.to raise_error(FastlaneCore::Interface::FastlaneError) do |error| - expect(error.message).to eq('Missing environment variable \'MISSING\'') + expect(error.message).to eq('Missing environment variable(s) \'MISSING\'') end end end