| 
									
										
										
										
											2020-10-10 14:16:11 +02:00
										 |  |  | # typed: false | 
					
						
							| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-27 11:49:56 +00:00
										 |  |  | require "cmd/shared_examples/args_parse" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-01 16:14:25 -05:00
										 |  |  | describe "brew extract" do | 
					
						
							| 
									
										
										
										
											2019-03-27 11:49:56 +00:00
										 |  |  |   it_behaves_like "parseable arguments" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-01 16:14:25 -05:00
										 |  |  |   context "when extracting a formula" do | 
					
						
							|  |  |  |     let!(:target) do | 
					
						
							|  |  |  |       path = Tap::TAP_DIRECTORY/"homebrew/homebrew-foo" | 
					
						
							|  |  |  |       (path/"Formula").mkpath | 
					
						
							|  |  |  |       target = Tap.from_path(path) | 
					
						
							|  |  |  |       core_tap = CoreTap.new | 
					
						
							|  |  |  |       core_tap.path.cd do | 
					
						
							|  |  |  |         system "git", "init" | 
					
						
							| 
									
										
										
										
											2021-07-17 13:45:59 +08:00
										 |  |  |         # Start with deprecated bottle syntax | 
					
						
							|  |  |  |         setup_test_formula "testball", bottle_block: <<~EOS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           bottle do | 
					
						
							|  |  |  |             cellar :any | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  |         EOS | 
					
						
							| 
									
										
										
										
											2021-02-01 16:14:25 -05:00
										 |  |  |         system "git", "add", "--all" | 
					
						
							|  |  |  |         system "git", "commit", "-m", "testball 0.1" | 
					
						
							| 
									
										
										
										
											2021-07-17 13:45:59 +08:00
										 |  |  |         # Replace with a valid formula for the next version | 
					
						
							|  |  |  |         formula_file = setup_test_formula "testball" | 
					
						
							| 
									
										
										
										
											2021-02-01 16:14:25 -05:00
										 |  |  |         contents = File.read(formula_file) | 
					
						
							|  |  |  |         contents.gsub!("testball-0.1", "testball-0.2") | 
					
						
							|  |  |  |         File.write(formula_file, contents) | 
					
						
							|  |  |  |         system "git", "add", "--all" | 
					
						
							|  |  |  |         system "git", "commit", "-m", "testball 0.2" | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |       { name: target.name, path: path } | 
					
						
							| 
									
										
										
										
											2018-08-24 11:42:11 -04:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-01 16:14:25 -05:00
										 |  |  |     it "retrieves the most recent version of formula", :integration_test do | 
					
						
							|  |  |  |       path = target[:path]/"Formula/testball@0.2.rb" | 
					
						
							|  |  |  |       expect { brew "extract", "testball", target[:name] } | 
					
						
							|  |  |  |         .to output(/^#{path}$/).to_stdout | 
					
						
							|  |  |  |         .and not_to_output.to_stderr | 
					
						
							|  |  |  |         .and be_a_success | 
					
						
							|  |  |  |       expect(path).to exist | 
					
						
							|  |  |  |       expect(Formulary.factory(path).version).to be == "0.2" | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2018-08-24 11:42:11 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-01 16:14:25 -05:00
										 |  |  |     it "retrieves the specified version of formula", :integration_test do | 
					
						
							|  |  |  |       path = target[:path]/"Formula/testball@0.1.rb" | 
					
						
							|  |  |  |       expect { brew "extract", "testball", target[:name], "--version=0.1" } | 
					
						
							|  |  |  |         .to output(/^#{path}$/).to_stdout | 
					
						
							|  |  |  |         .and not_to_output.to_stderr | 
					
						
							|  |  |  |         .and be_a_success | 
					
						
							|  |  |  |       expect(path).to exist | 
					
						
							|  |  |  |       expect(Formulary.factory(path).version).to be == "0.1" | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2018-08-24 11:42:11 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-01 16:14:25 -05:00
										 |  |  |     it "retrieves the compatible version of formula", :integration_test do | 
					
						
							|  |  |  |       path = target[:path]/"Formula/testball@0.rb" | 
					
						
							|  |  |  |       expect { brew "extract", "testball", target[:name], "--version=0" } | 
					
						
							|  |  |  |         .to output(/^#{path}$/).to_stdout | 
					
						
							|  |  |  |         .and not_to_output.to_stderr | 
					
						
							|  |  |  |         .and be_a_success | 
					
						
							|  |  |  |       expect(path).to exist | 
					
						
							|  |  |  |       expect(Formulary.factory(path).version).to be == "0.2" | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2018-08-24 11:42:11 -04:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2018-08-20 09:21:00 -04:00
										 |  |  | end |