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