Merge pull request #13234 from apainintheneck/ignore-old-caskfile
Allow casks with outdated caskfiles to be reinstalled
This commit is contained in:
		
						commit
						d02dbe2bcf
					
				@ -155,7 +155,11 @@ module Cask
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      # use the same cask file that was used for installation, if possible
 | 
					      # use the same cask file that was used for installation, if possible
 | 
				
			||||||
      installed_caskfile = @cask.installed_caskfile
 | 
					      installed_caskfile = @cask.installed_caskfile
 | 
				
			||||||
      installed_cask = installed_caskfile.exist? ? CaskLoader.load(installed_caskfile) : @cask
 | 
					      installed_cask = begin
 | 
				
			||||||
 | 
					        installed_caskfile.exist? ? CaskLoader.load(installed_caskfile) : @cask
 | 
				
			||||||
 | 
					      rescue CaskInvalidError # could be thrown by call to CaskLoader#load with outdated caskfile
 | 
				
			||||||
 | 
					        @cask # default
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      # Always force uninstallation, ignore method parameter
 | 
					      # Always force uninstallation, ignore method parameter
 | 
				
			||||||
      cask_installer = Installer.new(installed_cask, verbose: verbose?, force: true, upgrade: upgrade?)
 | 
					      cask_installer = Installer.new(installed_cask, verbose: verbose?, force: true, upgrade: upgrade?)
 | 
				
			||||||
 | 
				
			|||||||
@ -34,5 +34,14 @@ describe Cask::CaskLoader::FromPathLoader do
 | 
				
			|||||||
        }.to raise_error(Cask::CaskUnreadableError, /undefined local variable or method/)
 | 
					        }.to raise_error(Cask::CaskUnreadableError, /undefined local variable or method/)
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    context "when the file contains an outdated cask" do
 | 
				
			||||||
 | 
					      it "raises an error" do
 | 
				
			||||||
 | 
					        expect {
 | 
				
			||||||
 | 
					          described_class.new(cask_path("invalid/invalid-depends-on-macos-bad-release")).load(config: nil)
 | 
				
			||||||
 | 
					        }.to raise_error(Cask::CaskInvalidError,
 | 
				
			||||||
 | 
					                         /invalid 'depends_on macos' value: unknown or unsupported macOS version:/)
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
@ -251,4 +251,20 @@ describe Cask::Installer, :cask do
 | 
				
			|||||||
      expect(Cask::Caskroom.path.join("local-caffeine")).not_to be_a_directory
 | 
					      expect(Cask::Caskroom.path.join("local-caffeine")).not_to be_a_directory
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  describe "uninstall_existing_cask" do
 | 
				
			||||||
 | 
					    it "uninstalls when cask file is outdated" do
 | 
				
			||||||
 | 
					      caffeine = Cask::CaskLoader.load(cask_path("local-caffeine"))
 | 
				
			||||||
 | 
					      described_class.new(caffeine).install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      expect(Cask::CaskLoader.load(cask_path("local-caffeine"))).to be_installed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      expect(caffeine).to receive(:installed?).once.and_return(true)
 | 
				
			||||||
 | 
					      outdate_caskfile = cask_path("invalid/invalid-depends-on-macos-bad-release")
 | 
				
			||||||
 | 
					      expect(caffeine).to receive(:installed_caskfile).once.and_return(outdate_caskfile)
 | 
				
			||||||
 | 
					      described_class.new(caffeine).uninstall_existing_cask
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      expect(Cask::CaskLoader.load(cask_path("local-caffeine"))).not_to be_installed
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user