summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHomu <homu@barosl.com>2016-09-19 18:54:09 +0900
committerSamuel Giddins <segiddins@segiddins.me>2016-09-30 12:27:07 -0500
commit7c2592ef5cbd2c21f335c3f8070c402fd6b54152 (patch)
tree0b1a0d7d85ef1c8c6e0b91533123d0585c788bef
parentc9a50d5a69824524f725169e17e38991f9e08c46 (diff)
downloadbundler-7c2592ef5cbd2c21f335c3f8070c402fd6b54152.tar.gz
Auto merge of #4971 - bundler:seg-pare-metadata-error, r=indirect
[EndpointSpecification] Raise a helpful error when parsing metadata fails Would make diagnosing a recent issue around this easier \c @indirect would love to get this into 1.13.1
-rw-r--r--lib/bundler/endpoint_specification.rb2
-rw-r--r--spec/bundler/endpoint_specification_spec.rb13
2 files changed, 15 insertions, 0 deletions
diff --git a/lib/bundler/endpoint_specification.rb b/lib/bundler/endpoint_specification.rb
index 69d05167e8..4f5377d3cc 100644
--- a/lib/bundler/endpoint_specification.rb
+++ b/lib/bundler/endpoint_specification.rb
@@ -113,6 +113,8 @@ module Bundler
@required_ruby_version = Gem::Requirement.new(v)
end
end
+ rescue => e
+ raise GemspecError, "There was an error parsing the metadata for the gem #{name} (#{version}): #{e.class}\n#{e}\nThe metadata was #{data.inspect}"
end
def build_dependency(name, requirements)
diff --git a/spec/bundler/endpoint_specification_spec.rb b/spec/bundler/endpoint_specification_spec.rb
index 6718b24971..b1e71df39a 100644
--- a/spec/bundler/endpoint_specification_spec.rb
+++ b/spec/bundler/endpoint_specification_spec.rb
@@ -50,4 +50,17 @@ describe Bundler::EndpointSpecification do
end
end
end
+
+ describe "#parse_metadata" do
+ context "when the metadata has malformed requirements" do
+ let(:metadata) { { "rubygems" => ">\n" } }
+ it "raises a helpful error message" do
+ expect { subject }.to raise_error(
+ Bundler::GemspecError,
+ a_string_including("There was an error parsing the metadata for the gem foo (1.0.0)").
+ and(a_string_including('The metadata was {"rubygems"=>">\n"}'))
+ )
+ end
+ end
+ end
end