68 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # typed: false
 | |
| # frozen_string_literal: true
 | |
| 
 | |
| require "cmd/shared_examples/args_parse"
 | |
| 
 | |
| describe "brew extract" do
 | |
|   it_behaves_like "parseable arguments"
 | |
| 
 | |
|   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"
 | |
|         # Start with deprecated bottle syntax
 | |
|         setup_test_formula "testball", bottle_block: <<~EOS
 | |
| 
 | |
|           bottle do
 | |
|             cellar :any
 | |
|           end
 | |
|         EOS
 | |
|         system "git", "add", "--all"
 | |
|         system "git", "commit", "-m", "testball 0.1"
 | |
|         # Replace with a valid formula for the next version
 | |
|         formula_file = setup_test_formula "testball"
 | |
|         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 }
 | |
|     end
 | |
| 
 | |
|     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
 | |
| 
 | |
|     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
 | |
| 
 | |
|     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
 | |
|   end
 | |
| end
 | 
