diff --git a/Library/Homebrew/cask/lib/hbc/cli/abstract_command.rb b/Library/Homebrew/cask/lib/hbc/cli/abstract_command.rb index c83fc3e42616b3dac3222da6b7d1e036d94365c3..77f85301eba001e7be803f2c2bcab60a62570aaf 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/abstract_command.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/abstract_command.rb @@ -41,6 +41,43 @@ module Hbc def initialize(*args) @args = process_arguments(*args) end + + def self.warn_unavailable_with_suggestion(cask_token, e) + exact_match, partial_matches = Search.search(cask_token) + error_message = e.message + if exact_match + error_message.concat(" Did you mean:\n#{exact_match}") + elsif !partial_matches.empty? + error_message.concat(" Did you mean one of:\n") + .concat(Formatter.columns(partial_matches.take(20))) + end + onoe error_message + end + + private + + def casks(alternative: -> { [] }) + return to_enum(:casks, alternative: alternative) unless block_given? + + count = 0 + + casks = args.empty? ? alternative.call : args + + casks.each do |cask_or_token| + begin + yield cask_or_token.respond_to?(:token) ? cask_or_token : CaskLoader.load(cask_or_token) + count += 1 + rescue CaskUnavailableError => e + cask_token = cask_or_token + self.class.warn_unavailable_with_suggestion cask_token, e + rescue CaskError => e + onoe e.message + end + end + + return :empty if casks.length.zero? + (count == casks.length) ? :complete : :incomplete + end end end end diff --git a/Library/Homebrew/cask/lib/hbc/cli/audit.rb b/Library/Homebrew/cask/lib/hbc/cli/audit.rb index 74d1ebfa772e545b0757ce6296c3b61d74ba248e..35d82800c601419a6253e6d02e2b16ae5ea8538f 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/audit.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/audit.rb @@ -9,11 +9,8 @@ module Hbc end def run - casks_to_audit = args.empty? ? Hbc.all : args.map(&CaskLoader.public_method(:load)) - - failed_casks = casks_to_audit.reject do |cask| - audit(cask) - end + failed_casks = casks(alternative: -> { Hbc.all }) + .reject { |cask| audit(cask) } return if failed_casks.empty? raise CaskError, "audit failed for casks: #{failed_casks.join(" ")}" diff --git a/Library/Homebrew/cask/lib/hbc/cli/cat.rb b/Library/Homebrew/cask/lib/hbc/cli/cat.rb index e68481b46b02c0cdd81bd853d5498019320677da..d08c87bea2fa8e9cfcda1c43297354ac3a114351 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/cat.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/cat.rb @@ -7,10 +7,12 @@ module Hbc end def run - args.each do |cask_token| - cask_path = CaskLoader.path(cask_token) - raise CaskUnavailableError, cask_token.to_s unless cask_path.exist? - puts File.open(cask_path, &:read) + raise CaskError, "Cat incomplete." if cat_casks == :incomplete + end + + def cat_casks + casks.each do |cask| + puts File.open(cask.sourcefile_path, &:read) end end diff --git a/Library/Homebrew/cask/lib/hbc/cli/cleanup.rb b/Library/Homebrew/cask/lib/hbc/cli/cleanup.rb index 40b37dd5dd9246f56884af268ff2ea6956f3090c..356162db552e28d4ba9d42bec7e587133aaa5008 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/cleanup.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/cleanup.rb @@ -20,7 +20,7 @@ module Hbc end def run - remove_cache_files(*@args) + remove_cache_files(*args) end def cache_files diff --git a/Library/Homebrew/cask/lib/hbc/cli/edit.rb b/Library/Homebrew/cask/lib/hbc/cli/edit.rb index 77238d209e5b7673b67bd5df3c94b4556e57b940..b9485886c9f5b253f6c8b8b14c1ff1e32476d8f2 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/edit.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/edit.rb @@ -9,10 +9,12 @@ module Hbc def run cask_token = args.first - cask_path = CaskLoader.path(cask_token) - - unless cask_path.exist? - raise CaskUnavailableError.new(cask_token, "Run #{Formatter.identifier("brew cask create #{cask_token}")} to create a new Cask.") + cask_path = begin + CaskLoader.load(cask_token).sourcefile_path + rescue CaskUnavailableError => e + reason = e.reason.empty? ? "" : "#{e.reason} " + reason.concat("Run #{Formatter.identifier("brew cask create #{e.token}")} to create a new Cask.") + raise e.class.new(e.token, reason) end odebug "Opening editor for Cask #{cask_token}" diff --git a/Library/Homebrew/cask/lib/hbc/cli/fetch.rb b/Library/Homebrew/cask/lib/hbc/cli/fetch.rb index 2c1cc5f66ebe76b3b50087f76893ebf3644a8b48..e31b1a17c1f224dcb2ac96708c2c803f2abcdfc9 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/fetch.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/fetch.rb @@ -9,9 +9,12 @@ module Hbc end def run - args.each do |cask_token| - ohai "Downloading external files for Cask #{cask_token}" - cask = CaskLoader.load(cask_token) + raise CaskError, "Fetch incomplete." if fetch_casks == :incomplete + end + + def fetch_casks + casks.each do |cask| + ohai "Downloading external files for Cask #{cask}" downloaded_path = Download.new(cask, force: force?).perform Verify.all(cask, downloaded_path) ohai "Success! Downloaded to -> #{downloaded_path}" diff --git a/Library/Homebrew/cask/lib/hbc/cli/home.rb b/Library/Homebrew/cask/lib/hbc/cli/home.rb index 009bc1e3e586ace10a692e7e2eedb98c7196cc89..d496e309ea185f86c22a245d289fdccb5ae37e26 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/home.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/home.rb @@ -2,9 +2,7 @@ module Hbc class CLI class Home < AbstractCommand def run - casks = args.map(&CaskLoader.public_method(:load)) - - if casks.empty? + if casks.none? odebug "Opening project homepage" self.class.open_url "https://caskroom.github.io/" else diff --git a/Library/Homebrew/cask/lib/hbc/cli/info.rb b/Library/Homebrew/cask/lib/hbc/cli/info.rb index 623c4b7378a5e581b342853193019bea1cd60d46..d26747e176dbdda7a08458ee0fa258dd505440b1 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/info.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/info.rb @@ -7,10 +7,8 @@ module Hbc end def run - args.each do |cask_token| - odebug "Getting info for Cask #{cask_token}" - cask = CaskLoader.load(cask_token) - + casks.each do |cask| + odebug "Getting info for Cask #{cask}" self.class.info(cask) end end diff --git a/Library/Homebrew/cask/lib/hbc/cli/install.rb b/Library/Homebrew/cask/lib/hbc/cli/install.rb index 4ac98d1deb892ca653c96800a2178a200033c07f..0f1a5dd34c4b03217da58b8fca2a3041df5113b6 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/install.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/install.rb @@ -10,47 +10,21 @@ module Hbc end def run - retval = install_casks - # retval is ternary: true/false/nil - - raise CaskError, "nothing to install" if retval.nil? - raise CaskError, "install incomplete" unless retval + raise CaskError, "Install incomplete." if install_casks == :incomplete end def install_casks - count = 0 - args.each do |cask_token| + casks.each do |cask| begin - cask = CaskLoader.load(cask_token) Installer.new(cask, binaries: binaries?, - verbose: verbose?, + verbose: verbose?, force: force?, skip_cask_deps: skip_cask_deps?, require_sha: require_sha?).install - count += 1 rescue CaskAlreadyInstalledError => e opoo e.message - count += 1 - rescue CaskUnavailableError => e - self.class.warn_unavailable_with_suggestion cask_token, e - rescue CaskError => e - onoe e.message end end - - count.zero? ? nil : count == args.length - end - - def self.warn_unavailable_with_suggestion(cask_token, e) - exact_match, partial_matches = Search.search(cask_token) - error_message = e.message - if exact_match - error_message.concat(" Did you mean:\n#{exact_match}") - elsif !partial_matches.empty? - error_message.concat(" Did you mean one of:\n") - .concat(Formatter.columns(partial_matches.take(20))) - end - onoe error_message end def self.help diff --git a/Library/Homebrew/cask/lib/hbc/cli/internal_dump.rb b/Library/Homebrew/cask/lib/hbc/cli/internal_dump.rb index 78dbf1622b244578255d13a58e2fbcb6eeeceaef..e21ce86b6cdbf61d873655712120a879d9625a01 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/internal_dump.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/internal_dump.rb @@ -7,25 +7,11 @@ module Hbc end def run - retval = dump_casks - # retval is ternary: true/false/nil - - raise CaskError, "nothing to dump" if retval.nil? - raise CaskError, "dump incomplete" unless retval + raise CaskError, "Dump incomplete." if dump_casks == :incomplet end def dump_casks - count = 0 - args.each do |cask_token| - begin - cask = CaskLoader.load(cask_token) - count += 1 - cask.dumpcask - rescue StandardError => e - opoo "#{cask_token} was not found or would not load: #{e}" - end - end - count.zero? ? nil : count == args.length + casks.each(&:dumpcask) end def self.help diff --git a/Library/Homebrew/cask/lib/hbc/cli/internal_stanza.rb b/Library/Homebrew/cask/lib/hbc/cli/internal_stanza.rb index 86dee7c9c14f47d54b3a206aa822a71136d97035..4515fe931931fa44b54b4315a927c19c88660350 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/internal_stanza.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/internal_stanza.rb @@ -72,38 +72,22 @@ module Hbc end def run - retval = print_stanzas - # retval is ternary: true/false/nil - if retval.nil? - exit 1 if quiet? - raise CaskError, "nothing to print" - elsif !retval - exit 1 if quiet? - raise CaskError, "print incomplete" - end + return unless print_stanzas == :incomplete + exit 1 if quiet? + raise CaskError, "Print incomplete." end def print_stanzas - count = 0 if ARTIFACTS.include?(stanza) artifact_name = stanza @stanza = :artifacts end - cask_tokens = args.empty? ? Hbc.all_tokens : args - cask_tokens.each do |cask_token| - print "#{cask_token}\t" if table? - - begin - cask = CaskLoader.load(cask_token) - rescue StandardError - opoo "Cask '#{cask_token}' was not found" unless quiet? - puts "" - next - end + casks(alternative: -> { Hbc.all }).each do |cask| + print "#{cask}\t" if table? unless cask.respond_to?(stanza) - opoo "no such stanza '#{stanza}' on Cask '#{cask_token}'" unless quiet? + opoo "no such stanza '#{stanza}' on Cask '#{cask}'" unless quiet? puts "" next end @@ -111,13 +95,13 @@ module Hbc begin value = cask.send(@stanza) rescue StandardError - opoo "failure calling '#{stanza}' on Cask '#{cask_token}'" unless quiet? + opoo "failure calling '#{stanza}' on Cask '#{cask}'" unless quiet? puts "" next end if artifact_name && !value.key?(artifact_name) - opoo "no such stanza '#{artifact_name}' on Cask '#{cask_token}'" unless quiet? + opoo "no such stanza '#{artifact_name}' on Cask '#{cask}'" unless quiet? puts "" next end @@ -131,10 +115,7 @@ module Hbc else puts value.to_s end - - count += 1 end - count.zero? ? nil : count == cask_tokens.length end def self.help diff --git a/Library/Homebrew/cask/lib/hbc/cli/list.rb b/Library/Homebrew/cask/lib/hbc/cli/list.rb index 9d2ded4be5a417f3a9a88f69ebdb89702865e3f0..9d978360eb41ca67f12d54113573eaff59b40a31 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/list.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/list.rb @@ -11,44 +11,22 @@ module Hbc def run retval = args.any? ? list : list_installed - # retval is ternary: true/false/nil - if retval.nil? && args.none? - opoo "nothing to list" # special case: avoid exit code - elsif retval.nil? - raise CaskError, "nothing to list" - elsif !retval - raise CaskError, "listing incomplete" - end + raise CaskError, "Listing incomplete." if retval == :incomplete end def list - count = 0 - - args.each do |cask_token| - odebug "Listing files for Cask #{cask_token}" - begin - cask = CaskLoader.load(cask_token) + casks.each do |cask| + raise CaskNotInstalledError, cask unless cask.installed? - if cask.installed? - if one? - puts cask.token - elsif versions? - puts self.class.format_versioned(cask) - else - cask = CaskLoader.load_from_file(cask.installed_caskfile) - self.class.list_artifacts(cask) - end - - count += 1 - else - opoo "#{cask} is not installed" - end - rescue CaskUnavailableError => e - onoe e + if one? + puts cask.token + elsif versions? + puts self.class.format_versioned(cask) + else + cask = CaskLoader.load_from_file(cask.installed_caskfile) + self.class.list_artifacts(cask) end end - - count.zero? ? nil : count == args.length end def self.list_artifacts(cask) @@ -69,7 +47,7 @@ module Hbc puts Formatter.columns(installed_casks.map(&:to_s)) end - installed_casks.empty? ? nil : true + installed_casks.empty? ? :empty : :complete end def self.format_versioned(cask) diff --git a/Library/Homebrew/cask/lib/hbc/cli/outdated.rb b/Library/Homebrew/cask/lib/hbc/cli/outdated.rb index 7877ead05d453ebdb637979705a795e8740f935f..b0a84e8d26184b7aff902650cfffa7bdd733b7ca 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/outdated.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/outdated.rb @@ -10,9 +10,7 @@ module Hbc end def run - casks_to_check = args.empty? ? Hbc.installed : args.map(&CaskLoader.public_method(:load)) - - casks_to_check.each do |cask| + casks(alternative: -> { Hbc.installed }).each do |cask| odebug "Checking update info of Cask #{cask}" self.class.list_if_outdated(cask, greedy?, verbose?) end diff --git a/Library/Homebrew/cask/lib/hbc/cli/reinstall.rb b/Library/Homebrew/cask/lib/hbc/cli/reinstall.rb index d90317892e0c9f6a1e9538004a36b065c1055f6d..337a2eb9d6bf1dd0ea4d52bfd56e989221190359 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/reinstall.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/reinstall.rb @@ -2,27 +2,13 @@ module Hbc class CLI class Reinstall < Install def install_casks - count = 0 - args.each do |cask_token| - begin - cask = CaskLoader.load(cask_token) - - Installer.new(cask, - binaries: binaries?, - verbose: verbose?, - force: force?, - skip_cask_deps: skip_cask_deps?, - require_sha: require_sha?).reinstall - - count += 1 - rescue CaskUnavailableError => e - self.class.warn_unavailable_with_suggestion cask_token, e - rescue CaskError => e - onoe e.message - end + casks.each do |cask| + Installer.new(cask, binaries: binaries?, + verbose: verbose?, + force: force?, + skip_cask_deps: skip_cask_deps?, + require_sha: require_sha?).reinstall end - - count.zero? ? nil : count == args.length end def self.help diff --git a/Library/Homebrew/cask/lib/hbc/cli/style.rb b/Library/Homebrew/cask/lib/hbc/cli/style.rb index c9417f5092d9428fc54e95f6b815098af5aaad4b..86fc98eaa2745ee11ddcf95413e5f0a59008f7e4 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/style.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/style.rb @@ -31,7 +31,7 @@ module Hbc elsif args.any? { |file| File.exist?(file) } args else - args.map { |token| CaskLoader.path(token) } + casks.map(&:sourcefile_path) end end diff --git a/Library/Homebrew/cask/lib/hbc/cli/uninstall.rb b/Library/Homebrew/cask/lib/hbc/cli/uninstall.rb index 33ee5afa9ac41e1903242a258ec1f19a38bcf30a..c0697c808014e69c717e33fd9e52ceb58c75e72f 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/uninstall.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/uninstall.rb @@ -9,9 +9,12 @@ module Hbc end def run - args.each do |cask_token| - odebug "Uninstalling Cask #{cask_token}" - cask = CaskLoader.load(cask_token) + raise CaskError, "Uninstall incomplete." if uninstall_casks == :incomplete + end + + def uninstall_casks + casks.each do |cask| + odebug "Uninstalling Cask #{cask}" raise CaskNotInstalledError, cask unless cask.installed? || force? @@ -27,8 +30,8 @@ module Hbc single = versions.count == 1 puts <<-EOS.undent - #{cask_token} #{versions.join(", ")} #{single ? "is" : "are"} still installed. - Remove #{single ? "it" : "them all"} with `brew cask uninstall --force #{cask_token}`. + #{cask} #{versions.join(", ")} #{single ? "is" : "are"} still installed. + Remove #{single ? "it" : "them all"} with `brew cask uninstall --force #{cask}`. EOS end end diff --git a/Library/Homebrew/cask/lib/hbc/cli/zap.rb b/Library/Homebrew/cask/lib/hbc/cli/zap.rb index 3c07ff9e88dc45e353c38c7623c1e5e13a9dc3aa..d129431062560cf00761415b6020a66197d730a8 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/zap.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/zap.rb @@ -7,9 +7,12 @@ module Hbc end def run - args.each do |cask_token| - odebug "Zapping Cask #{cask_token}" - cask = CaskLoader.load(cask_token) + raise CaskError, "Zap incomplete." if zap_casks == :incomplete + end + + def zap_casks + casks.each do |cask| + odebug "Zapping Cask #{cask}" Installer.new(cask, verbose: verbose?).zap end end diff --git a/Library/Homebrew/test/cask/cli/audit_spec.rb b/Library/Homebrew/test/cask/cli/audit_spec.rb index 412db1481e721e31467c9cbc12eea9a5ad9072b5..01f506c8c40de57fcef112efa4e2b90f80ba408a 100644 --- a/Library/Homebrew/test/cask/cli/audit_spec.rb +++ b/Library/Homebrew/test/cask/cli/audit_spec.rb @@ -1,5 +1,5 @@ describe Hbc::CLI::Audit, :cask do - let(:cask) { double } + let(:cask) { double("cask", token: nil) } describe "selection of Casks to audit" do it "audits all Casks if no tokens are given" do diff --git a/Library/Homebrew/test/cask/cli/cat_spec.rb b/Library/Homebrew/test/cask/cli/cat_spec.rb index 28089b2f1fb749ca02b1ee74aa66fe138e939c4b..b726a0b3665797e4957485392bd3f993c6b0e542 100644 --- a/Library/Homebrew/test/cask/cli/cat_spec.rb +++ b/Library/Homebrew/test/cask/cli/cat_spec.rb @@ -34,9 +34,9 @@ describe Hbc::CLI::Cat, :cask do end it "raises an exception when the Cask does not exist" do - expect { - Hbc::CLI::Cat.run("notacask") - }.to raise_error(Hbc::CaskUnavailableError) + expect { Hbc::CLI::Cat.run("notacask") } + .to output(/is unavailable/).to_stderr + .and raise_error(Hbc::CaskError, "Cat incomplete.") end describe "when no Cask is specified" do diff --git a/Library/Homebrew/test/cask/cli/fetch_spec.rb b/Library/Homebrew/test/cask/cli/fetch_spec.rb index 9f3056631b40f87ae5b0c5fcbc9a2611ca0aef15..54bdfc0c84e3550eaae377e474bdf97a0dfde48b 100644 --- a/Library/Homebrew/test/cask/cli/fetch_spec.rb +++ b/Library/Homebrew/test/cask/cli/fetch_spec.rb @@ -54,7 +54,7 @@ describe Hbc::CLI::Fetch, :cask do shutup do Hbc::CLI::Fetch.run("notacask") end - }.to raise_error(Hbc::CaskUnavailableError) + }.to raise_error(Hbc::CaskError, "Fetch incomplete.") end describe "when no Cask is specified" do diff --git a/Library/Homebrew/test/cask/cli/install_spec.rb b/Library/Homebrew/test/cask/cli/install_spec.rb index 0720d0d77560faa72fafd7d691f7be4b1569c8cc..cf69b5d86e4ca46cd3b3a0c7347edb813302665d 100644 --- a/Library/Homebrew/test/cask/cli/install_spec.rb +++ b/Library/Homebrew/test/cask/cli/install_spec.rb @@ -70,7 +70,7 @@ describe Hbc::CLI::Install, :cask do shutup do Hbc::CLI::Install.run("notacask") end - }.to raise_error(Hbc::CaskError) + }.to raise_error(Hbc::CaskError, "Install incomplete.") end it "returns a suggestion for a misspelled Cask" do @@ -80,7 +80,7 @@ describe Hbc::CLI::Install, :cask do rescue Hbc::CaskError nil end - }.to output(/Cask 'localcaffeine' is unavailable\. Did you mean:\nlocal-caffeine/).to_stderr + }.to output(/Cask 'localcaffeine' is unavailable: No Cask with this name exists\. Did you mean:\nlocal-caffeine/).to_stderr end it "returns multiple suggestions for a Cask fragment" do @@ -90,7 +90,7 @@ describe Hbc::CLI::Install, :cask do rescue Hbc::CaskError nil end - }.to output(/Cask 'local-caf' is unavailable\. Did you mean one of:\nlocal-caffeine/).to_stderr + }.to output(/Cask 'local-caf' is unavailable: No Cask with this name exists\. Did you mean one of:\nlocal-caffeine/).to_stderr end describe "when no Cask is specified" do diff --git a/Library/Homebrew/test/cask/cli/style_spec.rb b/Library/Homebrew/test/cask/cli/style_spec.rb index a5dcf6f6f9f69cd568569bca56451c701ca8aa23..640eca5f444877a7923994e06dc43c28c0960abe 100644 --- a/Library/Homebrew/test/cask/cli/style_spec.rb +++ b/Library/Homebrew/test/cask/cli/style_spec.rb @@ -107,7 +107,7 @@ describe Hbc::CLI::Style, :cask do end it "tries to find paths for all tokens" do - expect(Hbc::CaskLoader).to receive(:path).twice + expect(Hbc::CaskLoader).to receive(:load).twice.and_return(double("cask", sourcefile_path: nil)) subject end end diff --git a/Library/Homebrew/test/cask/cli/uninstall_spec.rb b/Library/Homebrew/test/cask/cli/uninstall_spec.rb index bc1f5261346cc5519ba927a969bf5babd892e7c8..cc640fad709380d93d979212e85cec8914617d81 100644 --- a/Library/Homebrew/test/cask/cli/uninstall_spec.rb +++ b/Library/Homebrew/test/cask/cli/uninstall_spec.rb @@ -17,15 +17,15 @@ describe Hbc::CLI::Uninstall, :cask do end it "shows an error when a bad Cask is provided" do - expect { - Hbc::CLI::Uninstall.run("notacask") - }.to raise_error(Hbc::CaskUnavailableError) + expect { Hbc::CLI::Uninstall.run("notacask") } + .to output(/is unavailable/).to_stderr + .and raise_error(Hbc::CaskError, "Uninstall incomplete.") end it "shows an error when a Cask is provided that's not installed" do - expect { - Hbc::CLI::Uninstall.run("local-caffeine") - }.to raise_error(Hbc::CaskNotInstalledError) + expect { Hbc::CLI::Uninstall.run("local-caffeine") } + .to output(/is not installed/).to_stderr + .and raise_error(Hbc::CaskError, "Uninstall incomplete.") end it "tries anyway on a non-present Cask when --force is given" do @@ -89,11 +89,9 @@ describe Hbc::CLI::Uninstall, :cask do Hbc.appdir.join("MyFancyApp.app").rmtree - expect { - shutup do - Hbc::CLI::Uninstall.run("with-uninstall-script-app") - end - }.to raise_error(Hbc::CaskError, /does not exist/) + expect { shutup { Hbc::CLI::Uninstall.run("with-uninstall-script-app") } } + .to output(/does not exist/).to_stderr + .and raise_error(Hbc::CaskError, "Uninstall incomplete.") expect(cask).to be_installed diff --git a/Library/Homebrew/test/cask/cli/zap_spec.rb b/Library/Homebrew/test/cask/cli/zap_spec.rb index f3af0e66f3048599ffffb9945ebd0fbb46c8ff46..e39ca61f8b137e63b3b0d061bdfbc06ea3ab9559 100644 --- a/Library/Homebrew/test/cask/cli/zap_spec.rb +++ b/Library/Homebrew/test/cask/cli/zap_spec.rb @@ -1,8 +1,8 @@ describe Hbc::CLI::Zap, :cask do it "shows an error when a bad Cask is provided" do - expect { - Hbc::CLI::Zap.run("notacask") - }.to raise_error(Hbc::CaskUnavailableError) + expect { Hbc::CLI::Zap.run("notacask") } + .to output(/is unavailable/).to_stderr + .and raise_error(Hbc::CaskError, "Zap incomplete.") end it "can zap and unlink multiple Casks at once" do