summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2017-06-16 21:05:40 -0400
committerSamuel Giddins <segiddins@segiddins.me>2017-06-27 17:25:12 +0200
commit6e1506ff8cc7393111267c3c5a0a29f8ecb4ecaa (patch)
tree4226ec602a5a9893ae1ce9a0066edf868a31c829
parenta14b5c02da80dc74bdafc660f592c5c4d0c8740d (diff)
downloadbundler-6e1506ff8cc7393111267c3c5a0a29f8ecb4ecaa.tar.gz
Extract md5 checking to SharedHelpers
-rw-r--r--lib/bundler/fetcher/compact_index.rb12
-rw-r--r--lib/bundler/shared_helpers.rb13
-rw-r--r--lib/bundler/source/rubygems/remote.rb2
-rw-r--r--spec/bundler/fetcher/compact_index_spec.rb5
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