| 
									
										
										
										
											2022-02-28 15:40:39 -08:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require "keg_relocate" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 15:11:11 -08:00
										 |  |  | RSpec.describe Keg do | 
					
						
							| 
									
										
										
										
											2022-02-28 15:40:39 -08:00
										 |  |  |   subject(:keg) { described_class.new(HOMEBREW_CELLAR/"foo/1.0.0") } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   let(:dir) { HOMEBREW_CELLAR/"foo/1.0.0" } | 
					
						
							|  |  |  |   let(:newdir) { HOMEBREW_CELLAR/"foo" } | 
					
						
							|  |  |  |   let(:binary_file) { dir/"file.bin" } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   before do | 
					
						
							|  |  |  |     dir.mkpath | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def setup_binary_file | 
					
						
							|  |  |  |     binary_file.atomic_write <<~EOS | 
					
						
							|  |  |  |       \x00#{dir}\x00 | 
					
						
							|  |  |  |     EOS | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "#relocate_build_prefix" do | 
					
						
							|  |  |  |     specify "replace prefix in binary files" do | 
					
						
							|  |  |  |       setup_binary_file | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       keg.relocate_build_prefix(keg, dir, newdir) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       old_prefix_matches = Set.new | 
					
						
							|  |  |  |       keg.each_unique_file_matching(dir) do |file| | 
					
						
							|  |  |  |         old_prefix_matches << file | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(old_prefix_matches.size).to eq 0
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       new_prefix_matches = Set.new | 
					
						
							|  |  |  |       keg.each_unique_file_matching(newdir) do |file| | 
					
						
							|  |  |  |         new_prefix_matches << file | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(new_prefix_matches.size).to eq 1
 | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |