shebang: raise error if no rewriting
This commit is contained in:
		
							parent
							
								
									397afb6204
								
							
						
					
					
						commit
						7e6be5eb44
					
				
							
								
								
									
										30
									
								
								Library/Homebrew/test/utils/shebang_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								Library/Homebrew/test/utils/shebang_spec.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					# typed: false
 | 
				
			||||||
 | 
					# frozen_string_literal: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require "utils/shebang"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe Utils::Shebang do
 | 
				
			||||||
 | 
					  let(:file) { Tempfile.new("shebang") }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  before do
 | 
				
			||||||
 | 
					    file.write "#!/usr/bin/python"
 | 
				
			||||||
 | 
					    file.flush
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  after { file.unlink }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  describe "rewrite_shebang" do
 | 
				
			||||||
 | 
					    it "rewrites a shebang" do
 | 
				
			||||||
 | 
					      rewrite_info = Utils::Shebang::RewriteInfo.new(/^#!.*python$/, 25, "new_shebang")
 | 
				
			||||||
 | 
					      described_class.rewrite_shebang rewrite_info, file
 | 
				
			||||||
 | 
					      expect(File.read(file)).to eq "#!new_shebang"
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it "raises an error if no rewriting occurs" do
 | 
				
			||||||
 | 
					      rewrite_info = Utils::Shebang::RewriteInfo.new(/^#!.*perl$/, 25, "new_shebang")
 | 
				
			||||||
 | 
					      expect {
 | 
				
			||||||
 | 
					        described_class.rewrite_shebang rewrite_info, file
 | 
				
			||||||
 | 
					      }.to raise_error("No matching files found to rewrite shebang")
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
@ -34,13 +34,17 @@ module Utils
 | 
				
			|||||||
    # @api public
 | 
					    # @api public
 | 
				
			||||||
    sig { params(rewrite_info: RewriteInfo, paths: T::Array[T.any(String, Pathname)]).void }
 | 
					    sig { params(rewrite_info: RewriteInfo, paths: T::Array[T.any(String, Pathname)]).void }
 | 
				
			||||||
    def rewrite_shebang(rewrite_info, *paths)
 | 
					    def rewrite_shebang(rewrite_info, *paths)
 | 
				
			||||||
 | 
					      found = T.let(false, T::Boolean)
 | 
				
			||||||
      paths.each do |f|
 | 
					      paths.each do |f|
 | 
				
			||||||
        f = Pathname(f)
 | 
					        f = Pathname(f)
 | 
				
			||||||
        next unless f.file?
 | 
					        next unless f.file?
 | 
				
			||||||
        next unless rewrite_info.regex.match?(f.read(rewrite_info.max_length))
 | 
					        next unless rewrite_info.regex.match?(f.read(rewrite_info.max_length))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Utils::Inreplace.inreplace f.to_s, rewrite_info.regex, "#!#{rewrite_info.replacement}"
 | 
					        Utils::Inreplace.inreplace f.to_s, rewrite_info.regex, "#!#{rewrite_info.replacement}"
 | 
				
			||||||
 | 
					        found = true
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      raise "No matching files found to rewrite shebang" unless found
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user