File tree Expand file tree Collapse file tree 2 files changed +103
-1
lines changed Expand file tree Collapse file tree 2 files changed +103
-1
lines changed Original file line number Diff line number Diff line change @@ -540,7 +540,18 @@ def add_checksums
540540
541541 setup_domain! ( add_checksums : true )
542542
543- specs # force materialization to real specifications, so that checksums are fetched
543+ # force materialization to real specifications, so that checksums are fetched
544+ specs . each do |spec |
545+ next unless spec . source . is_a? ( Bundler ::Source ::Rubygems )
546+ # Checksum was fetched from the compact index API.
547+ next if !spec . source . checksum_store . missing? ( spec ) && !spec . source . checksum_store . empty? ( spec )
548+ # The gem isn't installed, can't compute the checksum.
549+ next unless spec . loaded_from
550+
551+ package = Gem ::Package . new ( spec . source . cached_built_in_gem ( spec ) )
552+ checksum = Checksum . from_gem_package ( package )
553+ spec . source . checksum_store . register ( spec , checksum )
554+ end
544555 end
545556
546557 private
Original file line number Diff line number Diff line change 21742174 L
21752175 end
21762176
2177+ it "add checksums for gems installed on disk" do
2178+ build_repo4 do
2179+ build_gem "warning" , "18.0.0"
2180+ end
2181+
2182+ bundle "config lockfile_checksums false"
2183+
2184+ simulate_platform "x86_64-linux" do
2185+ install_gemfile ( <<-G , artifice : "endpoint" )
2186+ source "https://gem.repo4"
2187+
2188+ gem "warning"
2189+ G
2190+
2191+ bundle "config --delete lockfile_checksums"
2192+ bundle ( "lock --add-checksums" , artifice : "endpoint" )
2193+ end
2194+
2195+ checksums = checksums_section do |c |
2196+ c . checksum gem_repo4 , "warning" , "18.0.0"
2197+ end
2198+
2199+ expect ( lockfile ) . to eq <<~L
2200+ GEM
2201+ remote: https://gem.repo4/
2202+ specs:
2203+ warning (18.0.0)
2204+
2205+ PLATFORMS
2206+ ruby
2207+ x86_64-linux
2208+
2209+ DEPENDENCIES
2210+ warning
2211+ #{ checksums }
2212+ BUNDLED WITH
2213+ #{ Bundler ::VERSION }
2214+ L
2215+ end
2216+
2217+ it "doesn't add checksum for gems not installed on disk" do
2218+ lockfile ( <<~L )
2219+ GEM
2220+ remote: https://gem.repo4/
2221+ specs:
2222+ warning (18.0.0)
2223+
2224+ PLATFORMS
2225+ #{ local_platform }
2226+
2227+ DEPENDENCIES
2228+ warning
2229+
2230+ BUNDLED WITH
2231+ #{ Bundler ::VERSION }
2232+ L
2233+
2234+ gemfile ( <<~G )
2235+ source "https://gem.repo4"
2236+
2237+ gem "warning"
2238+ G
2239+
2240+ build_repo4 do
2241+ build_gem "warning" , "18.0.0"
2242+ end
2243+
2244+ FileUtils . rm_rf ( "#{ gem_repo4 } /gems" )
2245+
2246+ bundle ( "lock --add-checksums" , artifice : "endpoint" )
2247+
2248+ expect ( lockfile ) . to eq <<~L
2249+ GEM
2250+ remote: https://gem.repo4/
2251+ specs:
2252+ warning (18.0.0)
2253+
2254+ PLATFORMS
2255+ #{ local_platform }
2256+
2257+ DEPENDENCIES
2258+ warning
2259+
2260+ CHECKSUMS
2261+ warning (18.0.0)
2262+
2263+ BUNDLED WITH
2264+ #{ Bundler ::VERSION }
2265+ L
2266+ end
2267+
21772268 context "when re-resolving to include prereleases" do
21782269 before do
21792270 build_repo4 do
You can’t perform that action at this time.
0 commit comments