| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-28 08:35:36 +00:00
										 |  |  | require "cmd/shared_examples/args_parse" | 
					
						
							| 
									
										
										
										
											2024-04-01 11:58:35 -07:00
										 |  |  | require "cmd/upgrade" | 
					
						
							| 
									
										
										
										
											2019-03-28 08:35:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 11:58:35 -07:00
										 |  |  | RSpec.describe Homebrew::Cmd::UpgradeCmd do | 
					
						
							| 
									
										
										
										
											2025-03-06 22:59:58 -05:00
										 |  |  |   include FileUtils | 
					
						
							| 
									
										
										
										
											2019-03-28 08:35:36 +00:00
										 |  |  |   it_behaves_like "parseable arguments" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-01 16:14:25 -05:00
										 |  |  |   it "upgrades a Formula and cleans up old versions", :integration_test do | 
					
						
							| 
									
										
										
										
											2017-02-23 06:07:01 +01:00
										 |  |  |     setup_test_formula "testball" | 
					
						
							|  |  |  |     (HOMEBREW_CELLAR/"testball/0.0.1/foo").mkpath | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-29 19:55:05 +02:00
										 |  |  |     expect { brew "upgrade" }.to be_a_success | 
					
						
							| 
									
										
										
										
											2017-02-23 06:07:01 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-12 19:28:02 +00:00
										 |  |  |     expect(HOMEBREW_CELLAR/"testball/0.1").to be_a_directory | 
					
						
							|  |  |  |     expect(HOMEBREW_CELLAR/"testball/0.0.1").not_to exist | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2025-03-05 17:37:25 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |   it "upgrades with asking for user prompts", :integration_test do | 
					
						
							|  |  |  |     setup_test_formula "testball" | 
					
						
							|  |  |  |     (HOMEBREW_CELLAR/"testball/0.0.1/foo").mkpath | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-06 21:27:25 -05:00
										 |  |  |     expect do | 
					
						
							|  |  |  |       brew "upgrade", "--ask" | 
					
						
							|  |  |  |     end.to output(/.*Formula\s*\(1\):\s*testball.*/).to_stdout.and not_to_output.to_stderr | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(HOMEBREW_CELLAR/"testball/0.1").to be_a_directory | 
					
						
							|  |  |  |     expect(HOMEBREW_CELLAR/"testball/0.0.1").not_to exist | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it "upgrades with asking for user prompts with dependants checks", :integration_test do | 
					
						
							| 
									
										
										
										
											2025-03-06 21:43:24 -05:00
										 |  |  |     setup_test_formula "testball", <<~RUBY | 
					
						
							| 
									
										
										
										
											2025-03-06 21:27:25 -05:00
										 |  |  |       depends_on "testball5" | 
					
						
							|  |  |  |       # should work as its not building but test doesnt pass if dependant | 
					
						
							|  |  |  |       # depends_on "build" => :build | 
					
						
							|  |  |  |       depends_on "installed" | 
					
						
							|  |  |  |     RUBY | 
					
						
							|  |  |  |     setup_test_formula "installed" | 
					
						
							|  |  |  |     setup_test_formula "testball5", <<~RUBY | 
					
						
							|  |  |  |       depends_on "testball4" | 
					
						
							|  |  |  |     RUBY | 
					
						
							|  |  |  |     setup_test_formula "testball4" | 
					
						
							|  |  |  |     setup_test_formula "hiop" | 
					
						
							|  |  |  |     setup_test_formula "build" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     (HOMEBREW_CELLAR/"testball/0.0.1/foo").mkpath | 
					
						
							|  |  |  |     (HOMEBREW_CELLAR/"testball5/0.0.1/foo").mkpath | 
					
						
							|  |  |  |     (HOMEBREW_CELLAR/"testball4/0.0.1/foo").mkpath | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-06 22:03:15 -05:00
										 |  |  |     keg_dir = HOMEBREW_CELLAR/"installed"/"1.0" | 
					
						
							|  |  |  |     keg_dir.mkpath | 
					
						
							|  |  |  |     touch keg_dir/AbstractTab::FILENAME | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-07 00:38:02 -05:00
										 |  |  |     regex = /
 | 
					
						
							|  |  |  |       Formulae\s*\(3\):\s* | 
					
						
							| 
									
										
										
										
											2025-04-09 12:44:31 -04:00
										 |  |  |       (testball|testball5|testball4) | 
					
						
							| 
									
										
										
										
											2025-03-07 00:38:02 -05:00
										 |  |  |       \s*,\s* | 
					
						
							| 
									
										
										
										
											2025-04-09 12:44:31 -04:00
										 |  |  |       ((?!\1)testball|testball5|testball4) | 
					
						
							| 
									
										
										
										
											2025-03-07 00:38:02 -05:00
										 |  |  |       \s*,\s* | 
					
						
							| 
									
										
										
										
											2025-04-09 12:44:31 -04:00
										 |  |  |       ((?!\1|\2)testball|testball5|testball4) | 
					
						
							| 
									
										
										
										
											2025-03-07 00:38:02 -05:00
										 |  |  |     /x
 | 
					
						
							| 
									
										
										
										
											2025-03-06 23:02:17 -05:00
										 |  |  |     expect do | 
					
						
							| 
									
										
										
										
											2025-03-05 17:37:25 -05:00
										 |  |  |       brew "upgrade", "--ask" | 
					
						
							| 
									
										
										
										
											2025-03-07 00:38:02 -05:00
										 |  |  |     end.to output(regex) | 
					
						
							| 
									
										
										
										
											2025-03-06 23:02:17 -05:00
										 |  |  |       .to_stdout.and not_to_output.to_stderr | 
					
						
							| 
									
										
										
										
											2025-03-05 17:37:25 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     expect(HOMEBREW_CELLAR/"testball/0.1").to be_a_directory | 
					
						
							|  |  |  |     expect(HOMEBREW_CELLAR/"testball/0.0.1").not_to exist | 
					
						
							| 
									
										
										
										
											2025-03-06 21:27:25 -05:00
										 |  |  |     expect(HOMEBREW_CELLAR/"testball5/0.1").to be_a_directory | 
					
						
							|  |  |  |     expect(HOMEBREW_CELLAR/"testball5/0.0.1").not_to exist | 
					
						
							|  |  |  |     expect(HOMEBREW_CELLAR/"testball4/0.1").to be_a_directory | 
					
						
							|  |  |  |     expect(HOMEBREW_CELLAR/"testball4/0.0.1").not_to exist | 
					
						
							| 
									
										
										
										
											2025-03-05 17:37:25 -05:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2017-02-23 06:07:01 +01:00
										 |  |  | end |