| 
									
										
										
										
											2020-03-27 19:18:05 +00:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require "language/perl" | 
					
						
							|  |  |  | require "utils/shebang" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe Language::Perl::Shebang do | 
					
						
							|  |  |  |   let(:file) { Tempfile.new("perl-shebang") } | 
					
						
							|  |  |  |   let(:perl_f) do | 
					
						
							|  |  |  |     formula "perl" do | 
					
						
							|  |  |  |       url "https://brew.sh/perl-1.0.tgz" | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  |   let(:f) do | 
					
						
							|  |  |  |     formula "foo" do | 
					
						
							|  |  |  |       url "https://brew.sh/foo-1.0.tgz" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       uses_from_macos "perl" | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   before do | 
					
						
							|  |  |  |     file.write <<~EOS | 
					
						
							|  |  |  |       #!/usr/bin/env perl | 
					
						
							|  |  |  |       a | 
					
						
							|  |  |  |       b | 
					
						
							|  |  |  |       c | 
					
						
							|  |  |  |     EOS | 
					
						
							|  |  |  |     file.flush | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   after { file.unlink } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "#detected_perl_shebang" do | 
					
						
							|  |  |  |     it "can be used to replace Perl shebangs" do | 
					
						
							| 
									
										
										
										
											2022-11-09 14:45:43 +00:00
										 |  |  |       allow(Formulary).to receive(:factory) | 
					
						
							| 
									
										
										
										
											2020-03-27 19:18:05 +00:00
										 |  |  |       allow(Formulary).to receive(:factory).with(perl_f.name).and_return(perl_f) | 
					
						
							| 
									
										
										
										
											2023-04-17 11:18:51 -07:00
										 |  |  |       Utils::Shebang.rewrite_shebang described_class.detected_perl_shebang(f), file.path | 
					
						
							| 
									
										
										
										
											2020-03-27 19:18:05 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |       expected_shebang = if OS.mac? | 
					
						
							| 
									
										
										
										
											2021-04-29 17:49:01 +01:00
										 |  |  |         "/usr/bin/perl#{MacOS.preferred_perl_version}" | 
					
						
							| 
									
										
										
										
											2020-03-27 19:18:05 +00:00
										 |  |  |       else | 
					
						
							|  |  |  |         HOMEBREW_PREFIX/"opt/perl/bin/perl" | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(File.read(file)).to eq <<~EOS | 
					
						
							|  |  |  |         #!#{expected_shebang} | 
					
						
							|  |  |  |         a | 
					
						
							|  |  |  |         b | 
					
						
							|  |  |  |         c | 
					
						
							|  |  |  |       EOS | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |