 7b2d84337e
			
		
	
	
		7b2d84337e
		
			
		
	
	
	
	
		
			
			The "upgrades with asking for user prompts with dependants checks" test for `cmd/upgrade` has been failing on CI. The regex in the test doesn't match expected output because the negative lookaheads aren't working as expected. The intention is to make sure that the names aren't repeated (i.e., second shouldn't match first, third shouldn't match first or second) but the negative lookaheads should be _inside_ the second/third capture group for this to work as intended. This updated regex should work as expected. I manually tested it using the output from CI to make sure that it matches when no formula names are repeated (e.g., `Formulae (3): testball, testball4, testball5`) and does not match if formula names are repeated (e.g., `Formulae (3): testball5, testball4, testball5`).
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require "cmd/shared_examples/args_parse"
 | |
| require "cmd/upgrade"
 | |
| 
 | |
| RSpec.describe Homebrew::Cmd::UpgradeCmd do
 | |
|   include FileUtils
 | |
|   it_behaves_like "parseable arguments"
 | |
| 
 | |
|   it "upgrades a Formula and cleans up old versions", :integration_test do
 | |
|     setup_test_formula "testball"
 | |
|     (HOMEBREW_CELLAR/"testball/0.0.1/foo").mkpath
 | |
| 
 | |
|     expect { brew "upgrade" }.to be_a_success
 | |
| 
 | |
|     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", :integration_test do
 | |
|     setup_test_formula "testball"
 | |
|     (HOMEBREW_CELLAR/"testball/0.0.1/foo").mkpath
 | |
| 
 | |
|     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
 | |
|     setup_test_formula "testball", <<~RUBY
 | |
|       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
 | |
| 
 | |
|     keg_dir = HOMEBREW_CELLAR/"installed"/"1.0"
 | |
|     keg_dir.mkpath
 | |
|     touch keg_dir/AbstractTab::FILENAME
 | |
| 
 | |
|     regex = /
 | |
|       Formulae\s*\(3\):\s*
 | |
|       (testball|testball5|testball4)
 | |
|       \s*,\s*
 | |
|       ((?!\1)testball|testball5|testball4)
 | |
|       \s*,\s*
 | |
|       ((?!\1|\2)testball|testball5|testball4)
 | |
|     /x
 | |
|     expect do
 | |
|       brew "upgrade", "--ask"
 | |
|     end.to output(regex)
 | |
|       .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
 | |
|     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
 | |
|   end
 | |
| end
 |