| 
									
										
										
										
											2025-03-18 17:38:37 +00:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require "bundle" | 
					
						
							| 
									
										
										
										
											2025-03-24 21:55:47 +08:00
										 |  |  | require "bundle/commands/add" | 
					
						
							| 
									
										
										
										
											2025-03-18 17:38:37 +00:00
										 |  |  | require "cask/cask_loader" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | RSpec.describe Homebrew::Bundle::Commands::Add do | 
					
						
							|  |  |  |   subject(:add) do | 
					
						
							|  |  |  |     described_class.run(*args, type:, global:, file:) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   before { FileUtils.touch file } | 
					
						
							|  |  |  |   after { FileUtils.rm_f file } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   let(:global) { false } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   context "when called with a valid formula" do | 
					
						
							|  |  |  |     let(:args) { ["hello"] } | 
					
						
							|  |  |  |     let(:type) { :brew } | 
					
						
							|  |  |  |     let(:file) { "/tmp/some_random_brewfile#{Random.rand(2 ** 16)}" } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     before do | 
					
						
							|  |  |  |       stub_formula_loader formula("hello") { url "hello-1.0" } | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "adds entries to the given Brewfile" do | 
					
						
							|  |  |  |       expect { add }.not_to raise_error | 
					
						
							|  |  |  |       expect(File.read(file)).to include("#{type} \"#{args.first}\"") | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   context "when called with a valid cask" do | 
					
						
							|  |  |  |     let(:args) { ["alacritty"] } | 
					
						
							|  |  |  |     let(:type) { :cask } | 
					
						
							|  |  |  |     let(:file) { "/tmp/some_random_brewfile#{Random.rand(2 ** 16)}" } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     before do | 
					
						
							|  |  |  |       stub_cask_loader Cask::CaskLoader::FromContentLoader.new(+<<~RUBY).load(config: nil) | 
					
						
							|  |  |  |         cask "alacritty" do | 
					
						
							|  |  |  |           version "1.0" | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       RUBY | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "adds entries to the given Brewfile" do | 
					
						
							|  |  |  |       expect { add }.not_to raise_error | 
					
						
							|  |  |  |       expect(File.read(file)).to include("#{type} \"#{args.first}\"") | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |