summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/rubygems/config_file.rb61
-rw-r--r--spec/bundler/bundler/friendly_errors_spec.rb23
-rw-r--r--test/rubygems/test_gem_config_file.rb15
3 files changed, 28 insertions, 71 deletions
diff --git a/lib/rubygems/config_file.rb b/lib/rubygems/config_file.rb
index 907d5d1199..a0d263fba7 100644
--- a/lib/rubygems/config_file.rb
+++ b/lib/rubygems/config_file.rb
@@ -521,51 +521,46 @@ if you believe they were disclosed to a third party.
Bundler::YAMLSerializer.dump(content)
end
- def self.load_with_rubygems_config_hash(hash)
+ def self.load_with_rubygems_config_hash(yaml)
require "bundler/yaml_serializer"
- content = Bundler::YAMLSerializer.load(hash)
-
- if content.is_a? Hash
- content.transform_keys! do |k|
- if k.match?(/\A:(.*)\Z/)
- k[1..-1].to_sym
- elsif k.include?("__")
- if k.is_a?(Symbol)
- k.to_s.gsub(/__/,".").gsub(%r{/\Z}, "").to_sym
- else
- k.dup.gsub(/__/,".").gsub(%r{/\Z}, "")
- end
+ content = Bundler::YAMLSerializer.load(yaml)
+
+ content.transform_keys! do |k|
+ if k.match?(/\A:(.*)\Z/)
+ k[1..-1].to_sym
+ elsif k.include?("__")
+ if k.is_a?(Symbol)
+ k.to_s.gsub(/__/,".").gsub(%r{/\Z}, "").to_sym
else
- k
+ k.dup.gsub(/__/,".").gsub(%r{/\Z}, "")
end
+ else
+ k
end
+ end
- content.transform_values! do |v|
- if v.is_a?(String)
- if v.match?(/\A:(.*)\Z/)
- v[1..-1].to_sym
- elsif v.match?(/\A[+-]?\d+\Z/)
- v.to_i
- elsif v.match?(/\Atrue|false\Z/)
- v == "true"
- elsif v.empty?
- nil
- else
- v
- end
- elsif v.is_a?(Hash) && v.empty?
+ content.transform_values! do |v|
+ if v.is_a?(String)
+ if v.match?(/\A:(.*)\Z/)
+ v[1..-1].to_sym
+ elsif v.match?(/\A[+-]?\d+\Z/)
+ v.to_i
+ elsif v.match?(/\Atrue|false\Z/)
+ v == "true"
+ elsif v.empty?
nil
else
v
end
+ elsif v.is_a?(Hash) && v.empty?
+ nil
+ else
+ v
end
-
- content
- else
- warn "Failed to load #{filename} because it doesn't contain valid YAML hash"
- {}
end
+
+ content
end
private
diff --git a/spec/bundler/bundler/friendly_errors_spec.rb b/spec/bundler/bundler/friendly_errors_spec.rb
index 37afe488f3..17ca15ed8b 100644
--- a/spec/bundler/bundler/friendly_errors_spec.rb
+++ b/spec/bundler/bundler/friendly_errors_spec.rb
@@ -5,29 +5,6 @@ require "bundler/friendly_errors"
require "cgi"
RSpec.describe Bundler, "friendly errors" do
- context "with invalid YAML in .gemrc" do
- before do
- File.open(home(".gemrc"), "w") do |f|
- f.write "invalid: yaml: hah"
- end
- end
-
- after do
- FileUtils.rm(home(".gemrc"))
- end
-
- it "reports a relevant friendly error message" do
- gemfile <<-G
- source "#{file_uri_for(gem_repo1)}"
- gem "rack"
- G
-
- bundle :install, :env => { "DEBUG" => "true" }
-
- expect(err).to include("Failed to load #{home(".gemrc")}")
- end
- end
-
it "calls log_error in case of exception" do
exception = Exception.new
expect(Bundler::FriendlyErrors).to receive(:exit_status).with(exception).and_return(1)
diff --git a/test/rubygems/test_gem_config_file.rb b/test/rubygems/test_gem_config_file.rb
index d6957efb72..0c6763c6a3 100644
--- a/test/rubygems/test_gem_config_file.rb
+++ b/test/rubygems/test_gem_config_file.rb
@@ -465,21 +465,6 @@ if you believe they were disclosed to a third party.
assert_equal %w[http://even-more-gems.example.com], Gem.sources
end
- def test_ignore_invalid_config_file
- File.open @temp_conf, "w" do |fp|
- fp.puts "invalid: yaml:"
- end
-
- begin
- verbose = $VERBOSE
- $VERBOSE = nil
-
- util_config_file
- ensure
- $VERBOSE = verbose
- end
- end
-
def test_load_ssl_verify_mode_from_config
File.open @temp_conf, "w" do |fp|
fp.puts ":ssl_verify_mode: 1"