diff --git a/fastlane/lib/fastlane/actions/ensure_env_vars.rb b/fastlane/lib/fastlane/actions/ensure_env_vars.rb index 44112ca4b1d..e2253bac9dd 100644 --- a/fastlane/lib/fastlane/actions/ensure_env_vars.rb +++ b/fastlane/lib/fastlane/actions/ensure_env_vars.rb @@ -3,15 +3,11 @@ module Actions class EnsureEnvVarsAction < Action def self.run(params) variables = params[:env_vars] + missing_variables = variables.select { |variable| ENV[variable].to_s.strip.empty? } - variables.each do |variable| - next unless ENV[variable].to_s.strip.empty? - - UI.user_error!("Missing environment variable '#{variable}'") - end + 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!") end diff --git a/fastlane/spec/actions_specs/ensure_env_vars_spec.rb b/fastlane/spec/actions_specs/ensure_env_vars_spec.rb index 11914f0df9e..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,19 @@ 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 + + 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 variable(s) \'MISSING_FIRST\', \'MISSING_SECOND\'') end end end @@ -57,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