![copilot-swe-agent[bot]](/assets/img/avatar_default.png) cbe347782c
			
		
	
	
		cbe347782c
		
			
		
	
	
	
	
		
			
			While we're at it, update copilot instructions. Co-authored-by: MikeMcQuaid <125011+MikeMcQuaid@users.noreply.github.com>
		
			
				
	
	
		
			63 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| RSpec.describe Cask::Artifact::Symlinked, :cask do
 | |
|   # Test the formula conflict detection functionality that applies to all symlinked artifacts
 | |
|   describe "#conflicting_formula" do
 | |
|     let(:cask) do
 | |
|       Cask::CaskLoader.load(cask_path("with-binary")).tap do |cask|
 | |
|         InstallHelper.install_without_artifacts(cask)
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     let(:binary_artifact) { cask.artifacts.find { |a| a.is_a?(Cask::Artifact::Binary) } }
 | |
|     let(:binarydir) { cask.config.binarydir }
 | |
|     let(:target_path) { binarydir.join("binary") }
 | |
| 
 | |
|     around do |example|
 | |
|       binarydir.mkpath
 | |
| 
 | |
|       example.run
 | |
|     ensure
 | |
|       FileUtils.rm_f target_path
 | |
|       FileUtils.rmdir binarydir
 | |
|       # Clean up the fake formula directory
 | |
|       FileUtils.rm_rf(HOMEBREW_CELLAR/"with-binary") if (HOMEBREW_CELLAR/"with-binary").exist?
 | |
|     end
 | |
| 
 | |
|     context "when target is already linked from a formula" do
 | |
|       it "detects the conflict and skips linking with warning" do
 | |
|         # Create a fake formula directory structure
 | |
|         formula_cellar_path = HOMEBREW_CELLAR/"with-binary/1.0.0/bin"
 | |
|         formula_cellar_path.mkpath
 | |
|         formula_binary_path = formula_cellar_path/"binary"
 | |
|         FileUtils.touch formula_binary_path
 | |
| 
 | |
|         # Create symlink from the expected location to the formula binary
 | |
|         target_path.make_symlink(formula_binary_path)
 | |
| 
 | |
|         stderr = <<~EOS
 | |
|           Warning: It seems there is already a Binary at '#{target_path}' from formula with-binary; skipping link.
 | |
|         EOS
 | |
| 
 | |
|         expect do
 | |
|           binary_artifact.install_phase(command: NeverSudoSystemCommand, force: false)
 | |
|         end.to output(stderr).to_stderr
 | |
| 
 | |
|         expect(target_path).to be_a_symlink
 | |
|         expect(target_path.readlink).to eq(formula_binary_path)
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     context "when target doesn't exist" do
 | |
|       it "proceeds with normal installation" do
 | |
|         expect do
 | |
|           binary_artifact.install_phase(command: NeverSudoSystemCommand, force: false)
 | |
|         end.not_to raise_error
 | |
| 
 | |
|         expect(target_path).to be_a_symlink
 | |
|         expect(target_path.readlink).to exist
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |