Skip to content

Commit

Permalink
Handle Bundler DSL errors
Browse files Browse the repository at this point in the history
  • Loading branch information
lovro-bikic committed Oct 29, 2024
1 parent 5ff3013 commit 1b5c68e
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 1 deletion.
4 changes: 3 additions & 1 deletion lib/polariscope/scanner/dependency_context.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def gem_versions
@gem_versions ||= GemVersions.new(dependencies.map(&:name), spec_type: spec_type)
end

def bundle_definition
def bundle_definition # rubocop:disable Metrics/MethodLength
@bundle_definition ||=
::Tempfile.create do |gemfile|
::Tempfile.create do |gemfile_lock|
Expand All @@ -64,6 +64,8 @@ def bundle_definition
Bundler::Definition.build(gemfile.path, gemfile_lock.path, false)
end
end
rescue Bundler::Dsl::DSLError => e
raise Polariscope::Error, "Unable to parse the provided Gemfile/Gemfile.lock: #{e.message}"
end

def current_dependency_version(dependency)
Expand Down
11 changes: 11 additions & 0 deletions spec/files/gemfile.lock_unparseable
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
GEM
remote: https://rubygems.org/
specs:

PLATFORMS
x86_64-linux

DEPENDENCIES

BUNDLED WITH
2.2.16
3 changes: 3 additions & 0 deletions spec/files/gemfile_unparseable
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
source 'https://rubygems.org'

eval File.read('unavailable_file')
15 changes: 15 additions & 0 deletions spec/lib/polariscope/scanner/dependency_context_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,21 @@
'rspec-rails', 'ruby')
end
end

context 'when gemfile has unparseable content' do
let(:opts) do
{
gemfile_content: File.read('spec/files/gemfile_unparseable'),
gemfile_lock_ontent: File.read('spec/files/gemfile.lock_unparseable')
}
end

it 'raises an error' do
expect do
dependency_context.dependencies
end.to raise_error(Polariscope::Error, %r{^Unable to parse the provided Gemfile/Gemfile.lock:})
end
end
end

describe '#dependency_versions' do
Expand Down

0 comments on commit 1b5c68e

Please sign in to comment.