| 
									
										
										
										
											2020-11-04 17:14:43 -05:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require "uninstall" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 15:11:11 -08:00
										 |  |  | RSpec.describe Homebrew::Uninstall do | 
					
						
							| 
									
										
										
										
											2020-11-04 17:14:43 -05:00
										 |  |  |   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" | 
					
						
							| 
									
										
										
										
											2024-06-25 00:15:41 -04:00
										 |  |  |     tab.tabfile = dependent_formula.latest_installed_prefix/AbstractTab::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 | 
					
						
							| 
									
										
										
										
											2024-04-08 23:30:05 +08:00
										 |  |  |     specify "when `ignore_dependencies` is false" do | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       expect do | 
					
						
							| 
									
										
										
										
											2020-11-04 17:14:43 -05:00
										 |  |  |         described_class.handle_unsatisfied_dependents(kegs_by_rack) | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       end.to output(/Error/).to_stderr | 
					
						
							| 
									
										
										
										
											2020-11-04 17:14:43 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |       expect(Homebrew).to have_failed | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 23:30:05 +08:00
										 |  |  |     specify "when `ignore_dependencies` is true" do | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       expect do | 
					
						
							| 
									
										
										
										
											2020-11-04 17:14:43 -05:00
										 |  |  |         described_class.handle_unsatisfied_dependents(kegs_by_rack, ignore_dependencies: true) | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       end.not_to output.to_stderr | 
					
						
							| 
									
										
										
										
											2020-11-04 17:14:43 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |       expect(Homebrew).not_to have_failed | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |