| 
									
										
										
										
											2020-11-04 17:14:43 -05:00
										 |  |  | # typed: false | 
					
						
							|  |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require "uninstall" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe Homebrew::Uninstall do | 
					
						
							|  |  |  |   let(:dependency) { formula("dependency") { url "f-1" } } | 
					
						
							| 
									
										
										
										
											2021-02-09 06:11:53 +05:30
										 |  |  | 
 | 
					
						
							|  |  |  |   let(:dependent_formula) do | 
					
						
							|  |  |  |     formula("dependent_formula") do | 
					
						
							| 
									
										
										
										
											2020-11-04 17:14:43 -05:00
										 |  |  |       url "f-1" | 
					
						
							|  |  |  |       depends_on "dependency" | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-09 06:11:53 +05:30
										 |  |  |   let(:dependent_cask) do | 
					
						
							|  |  |  |     Cask::CaskLoader.load(+<<-RUBY)
 | 
					
						
							|  |  |  |       cask "dependent_cask" do | 
					
						
							| 
									
										
										
										
											2021-02-09 16:07:49 +05:30
										 |  |  |         version "1.0.0" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-09 06:11:53 +05:30
										 |  |  |         url "c-1" | 
					
						
							|  |  |  |         depends_on formula: "dependency" | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     RUBY | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-04 17:14:43 -05:00
										 |  |  |   let(:kegs_by_rack) { { dependency.rack => [Keg.new(dependency.latest_installed_prefix)] } } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   before do | 
					
						
							| 
									
										
										
										
											2021-02-09 06:11:53 +05:30
										 |  |  |     [dependency, dependent_formula].each do |f| | 
					
						
							| 
									
										
										
										
											2020-11-04 17:14:43 -05:00
										 |  |  |       f.latest_installed_prefix.mkpath | 
					
						
							|  |  |  |       Keg.new(f.latest_installed_prefix).optlink | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     tab = Tab.empty | 
					
						
							|  |  |  |     tab.homebrew_version = "1.1.6" | 
					
						
							| 
									
										
										
										
											2021-02-09 06:11:53 +05:30
										 |  |  |     tab.tabfile = dependent_formula.latest_installed_prefix/Tab::FILENAME | 
					
						
							| 
									
										
										
										
											2020-11-04 17:14:43 -05:00
										 |  |  |     tab.runtime_dependencies = [ | 
					
						
							|  |  |  |       { "full_name" => "dependency", "version" => "1" }, | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  |     tab.write | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-09 16:07:49 +05:30
										 |  |  |     Cask::Caskroom.path.join("dependent_cask", dependent_cask.version).mkpath | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-04 17:14:43 -05:00
										 |  |  |     stub_formula_loader dependency | 
					
						
							| 
									
										
										
										
											2021-02-09 06:11:53 +05:30
										 |  |  |     stub_formula_loader dependent_formula | 
					
						
							|  |  |  |     stub_cask_loader dependent_cask | 
					
						
							| 
									
										
										
										
											2020-11-04 17:14:43 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "::handle_unsatisfied_dependents" do | 
					
						
							|  |  |  |     specify "when developer" do | 
					
						
							|  |  |  |       ENV["HOMEBREW_DEVELOPER"] = "1" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect { | 
					
						
							|  |  |  |         described_class.handle_unsatisfied_dependents(kegs_by_rack) | 
					
						
							|  |  |  |       }.to output(/Warning/).to_stderr | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(Homebrew).not_to have_failed | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     specify "when not developer" do | 
					
						
							|  |  |  |       expect { | 
					
						
							|  |  |  |         described_class.handle_unsatisfied_dependents(kegs_by_rack) | 
					
						
							|  |  |  |       }.to output(/Error/).to_stderr | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(Homebrew).to have_failed | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     specify "when not developer and `ignore_dependencies` is true" do | 
					
						
							|  |  |  |       expect { | 
					
						
							|  |  |  |         described_class.handle_unsatisfied_dependents(kegs_by_rack, ignore_dependencies: true) | 
					
						
							|  |  |  |       }.not_to output.to_stderr | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(Homebrew).not_to have_failed | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |