Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Rspecs] Make error message expectation more flexible in runner_spec.rb to support Ruby 2.6 error message format #21591

Merged
merged 1 commit into from Oct 21, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
17 changes: 7 additions & 10 deletions fastlane/spec/runner_spec.rb
Expand Up @@ -69,31 +69,28 @@
end

context 'when a lane expects its parameters as keywords' do
def keywords_list(list)
# The way keyword lists appear in error messages is different in Windows & Linux vs macOS
if FastlaneCore::Helper.windows? || FastlaneCore::Helper.linux?
list.map(&:to_s).join(', ') # On Windows and Linux, keyword names don't show the `:` prefix in error messages
else
list.map(&:inspect).join(', ') # On other platforms, they do have `:` in front or keyword names
end
def keywords_error_message(error, *kwlist)
# Depending on Ruby versions, the keyword names appear with or without a `:` in error messages, hence the `:?` Regexp
list = kwlist.map { |kw| ":?#{kw}" }.join(', ')
/#{Regexp.escape(error)}: #{list}/
end

it 'fails when calling the lane with required parameters not being passed' do
expect do
@ff.runner.execute(:lane_kw_params, :ios)
end.to raise_error(ArgumentError, "missing keywords: #{keywords_list(%i[name version])}")
end.to raise_error(ArgumentError, keywords_error_message('missing keywords', :name, :version))
end

it 'fails when calling the lane with some missing parameters' do
expect do
@ff.runner.execute(:lane_kw_params, :ios, { name: 'test', interactive: true })
end.to raise_error(ArgumentError, "missing keyword: #{keywords_list(%i[version])}")
end.to raise_error(ArgumentError, keywords_error_message('missing keyword', :version))
end

it 'fails when calling the lane with extra parameters' do
expect do
@ff.runner.execute(:lane_kw_params, :ios, { name: 'test', version: '12.3', interactive: true, unexpected: 42 })
end.to raise_error(ArgumentError, "unknown keyword: #{keywords_list(%i[unexpected])}")
end.to raise_error(ArgumentError, keywords_error_message('unknown keyword', :unexpected))
end

it 'takes all parameters into account when all are passed explicitly' do
Expand Down