diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2017-06-16 21:05:40 -0400 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2017-06-27 17:25:12 +0200 |
commit | 6e1506ff8cc7393111267c3c5a0a29f8ecb4ecaa (patch) | |
tree | 4226ec602a5a9893ae1ce9a0066edf868a31c829 | |
parent | a14b5c02da80dc74bdafc660f592c5c4d0c8740d (diff) | |
download | bundler-6e1506ff8cc7393111267c3c5a0a29f8ecb4ecaa.tar.gz |
Extract md5 checking to SharedHelpers
-rw-r--r-- | lib/bundler/fetcher/compact_index.rb | 12 | ||||
-rw-r--r-- | lib/bundler/shared_helpers.rb | 13 | ||||
-rw-r--r-- | lib/bundler/source/rubygems/remote.rb | 2 | ||||
-rw-r--r-- | spec/bundler/fetcher/compact_index_spec.rb | 5 |
4 files changed, 20 insertions, 12 deletions
diff --git a/lib/bundler/fetcher/compact_index.rb b/lib/bundler/fetcher/compact_index.rb index 97de88101b..ec20f18edd 100644 --- a/lib/bundler/fetcher/compact_index.rb +++ b/lib/bundler/fetcher/compact_index.rb @@ -61,7 +61,7 @@ module Bundler compact_index_request :fetch_spec def available? - return nil unless md5_available? + return nil unless SharedHelpers.md5_available? user_home = Bundler.user_home return nil unless user_home.directory? && user_home.writable? # Read info file checksums out of /versions, so we can know if gems are up to date @@ -120,16 +120,6 @@ module Bundler Net::HTTPNotModified.new(nil, nil, nil) end end - - def md5_available? - require "openssl" - OpenSSL::Digest::MD5.digest("") - true - rescue LoadError - true - rescue OpenSSL::Digest::DigestError - false - end end end end diff --git a/lib/bundler/shared_helpers.rb b/lib/bundler/shared_helpers.rb index 07880387f0..bf8534023a 100644 --- a/lib/bundler/shared_helpers.rb +++ b/lib/bundler/shared_helpers.rb @@ -187,6 +187,19 @@ module Bundler msg end + def md5_available? + return @md5_available if defined?(@md5_available) + @md5_available = begin + require "openssl" + OpenSSL::Digest::MD5.digest("") + true + rescue LoadError + true + rescue OpenSSL::Digest::DigestError + false + end + end + private def find_gemfile(order_matters = false) diff --git a/lib/bundler/source/rubygems/remote.rb b/lib/bundler/source/rubygems/remote.rb index b49e645506..e60c1f9055 100644 --- a/lib/bundler/source/rubygems/remote.rb +++ b/lib/bundler/source/rubygems/remote.rb @@ -20,6 +20,8 @@ module Bundler # def cache_slug @cache_slug ||= begin + return nil unless SharedHelpers.md5_available? + cache_uri = original_uri || uri uri_parts = [cache_uri.host, cache_uri.user, cache_uri.port, cache_uri.path] diff --git a/spec/bundler/fetcher/compact_index_spec.rb b/spec/bundler/fetcher/compact_index_spec.rb index e624af73e1..4a8824ca7f 100644 --- a/spec/bundler/fetcher/compact_index_spec.rb +++ b/spec/bundler/fetcher/compact_index_spec.rb @@ -45,7 +45,10 @@ RSpec.describe Bundler::Fetcher::CompactIndex do end context "when OpenSSL is FIPS-enabled", :ruby => ">= 2.0.0" do - before { stub_const("OpenSSL::OPENSSL_FIPS", true) } + before do + Bundler::SharedHelpers.remove_instance_variable(:@md5_available) + stub_const("OpenSSL::OPENSSL_FIPS", true) + end context "when FIPS-mode is active" do before do |