cask audit: installer and pkg require uninstall
This commit is contained in:
		
							parent
							
								
									ed830c7831
								
							
						
					
					
						commit
						1ae2cf9709
					
				@ -36,6 +36,7 @@ module Hbc
 | 
			
		||||
      check_untrusted_pkg
 | 
			
		||||
      check_github_releases_appcast
 | 
			
		||||
      check_latest_with_appcast
 | 
			
		||||
      check_stanza_requires_uninstall
 | 
			
		||||
      self
 | 
			
		||||
    rescue StandardError => e
 | 
			
		||||
      odebug "#{e.message}\n#{e.backtrace.join("\n")}"
 | 
			
		||||
@ -65,6 +66,14 @@ module Hbc
 | 
			
		||||
      add_warning "allow_untrusted is not permitted in official Homebrew-Cask taps"
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def check_stanza_requires_uninstall
 | 
			
		||||
      odebug "Auditing stanzas which require an uninstall"
 | 
			
		||||
 | 
			
		||||
      return if cask.artifacts.none? { |k| k.is_a?(Hbc::Artifact::Pkg) || k.is_a?(Hbc::Artifact::Installer) }
 | 
			
		||||
      return if cask.artifacts.any? { |k| k.is_a?(Hbc::Artifact::Uninstall) }
 | 
			
		||||
      add_warning "installer and pkg stanzas require an uninstall stanza"
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def check_single_pre_postflight
 | 
			
		||||
      odebug "Auditing preflight and postflight stanzas"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -115,6 +115,40 @@ describe Hbc::Audit, :cask do
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    describe "when the Cask stanza requires uninstall" do
 | 
			
		||||
      let(:error_msg) { "installer and pkg stanzas require an uninstall stanza" }
 | 
			
		||||
 | 
			
		||||
      context "when the Cask does not require an uninstall" do
 | 
			
		||||
        let(:cask_token) { "basic-cask" }
 | 
			
		||||
 | 
			
		||||
        it { is_expected.not_to warn_with(error_msg) }
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      context "when the pkg Cask has an uninstall" do
 | 
			
		||||
        let(:cask_token) { "with-uninstall-pkgutil" }
 | 
			
		||||
 | 
			
		||||
        it { is_expected.not_to warn_with(error_msg) }
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      context "when the installer Cask has an uninstall" do
 | 
			
		||||
        let(:cask_token) { "installer-with-uninstall" }
 | 
			
		||||
 | 
			
		||||
        it { is_expected.not_to warn_with(error_msg) }
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      context "when the installer Cask does not have an uninstall" do
 | 
			
		||||
        let(:cask_token) { "with-installer-manual" }
 | 
			
		||||
 | 
			
		||||
        it { is_expected.to warn_with(error_msg) }
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      context "when the pkg Cask does not have an uninstall" do
 | 
			
		||||
        let(:cask_token) { "pkg-without-uninstall" }
 | 
			
		||||
 | 
			
		||||
        it { is_expected.to warn_with(error_msg) }
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    describe "preflight stanza checks" do
 | 
			
		||||
      let(:error_msg) { "only a single preflight stanza is allowed" }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,11 @@
 | 
			
		||||
cask 'installer-with-uninstall' do
 | 
			
		||||
  version '1.2.3'
 | 
			
		||||
  sha256 '67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94'
 | 
			
		||||
 | 
			
		||||
  url "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip"
 | 
			
		||||
  homepage 'http://example.com/local-caffeine'
 | 
			
		||||
 | 
			
		||||
  installer manual: 'Caffeine.app'
 | 
			
		||||
 | 
			
		||||
  uninstall delete: '/Applications/Caffeine.app'
 | 
			
		||||
end
 | 
			
		||||
@ -0,0 +1,9 @@
 | 
			
		||||
cask 'pkg-without-uninstall' do
 | 
			
		||||
  version '1.2.3'
 | 
			
		||||
  sha256 '8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b'
 | 
			
		||||
 | 
			
		||||
  url "file://#{TEST_FIXTURE_DIR}/cask/MyFancyPkg.zip"
 | 
			
		||||
  homepage 'http://example.com/fancy-pkg'
 | 
			
		||||
 | 
			
		||||
  pkg 'Fancy.pkg'
 | 
			
		||||
end
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user