From 9c8f7138f35625878e017559c896441fda6f357c Mon Sep 17 00:00:00 2001 From: Markus Reiter <me@reitermark.us> Date: Tue, 13 Jun 2017 17:14:01 +0200 Subject: [PATCH] Add `casks` method to iterate through arguments. --- .../cask/lib/hbc/cli/abstract_command.rb | 37 ++++++++++++++++ Library/Homebrew/cask/lib/hbc/cli/audit.rb | 7 +-- Library/Homebrew/cask/lib/hbc/cli/cat.rb | 10 +++-- Library/Homebrew/cask/lib/hbc/cli/cleanup.rb | 2 +- Library/Homebrew/cask/lib/hbc/cli/edit.rb | 10 +++-- Library/Homebrew/cask/lib/hbc/cli/fetch.rb | 9 ++-- Library/Homebrew/cask/lib/hbc/cli/home.rb | 4 +- Library/Homebrew/cask/lib/hbc/cli/info.rb | 6 +-- Library/Homebrew/cask/lib/hbc/cli/install.rb | 32 ++------------ .../cask/lib/hbc/cli/internal_dump.rb | 18 +------- .../cask/lib/hbc/cli/internal_stanza.rb | 35 ++++----------- Library/Homebrew/cask/lib/hbc/cli/list.rb | 44 +++++-------------- Library/Homebrew/cask/lib/hbc/cli/outdated.rb | 4 +- .../Homebrew/cask/lib/hbc/cli/reinstall.rb | 26 +++-------- Library/Homebrew/cask/lib/hbc/cli/style.rb | 2 +- .../Homebrew/cask/lib/hbc/cli/uninstall.rb | 13 +++--- Library/Homebrew/cask/lib/hbc/cli/zap.rb | 9 ++-- Library/Homebrew/test/cask/cli/audit_spec.rb | 2 +- Library/Homebrew/test/cask/cli/cat_spec.rb | 6 +-- Library/Homebrew/test/cask/cli/fetch_spec.rb | 2 +- .../Homebrew/test/cask/cli/install_spec.rb | 6 +-- Library/Homebrew/test/cask/cli/style_spec.rb | 2 +- .../Homebrew/test/cask/cli/uninstall_spec.rb | 20 ++++----- Library/Homebrew/test/cask/cli/zap_spec.rb | 6 +-- 24 files changed, 128 insertions(+), 184 deletions(-) diff --git a/Library/Homebrew/cask/lib/hbc/cli/abstract_command.rb b/Library/Homebrew/cask/lib/hbc/cli/abstract_command.rb index c83fc3e426..77f85301eb 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 74d1ebfa77..35d82800c6 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 e68481b46b..d08c87bea2 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 40b37dd5dd..356162db55 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 77238d209e..b9485886c9 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 2c1cc5f66e..e31b1a17c1 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 009bc1e3e5..d496e309ea 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 623c4b7378..d26747e176 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 4ac98d1deb..0f1a5dd34c 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 78dbf1622b..e21ce86b6c 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 86dee7c9c1..4515fe9319 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 9d2ded4be5..9d978360eb 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 7877ead05d..b0a84e8d26 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 d90317892e..337a2eb9d6 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 c9417f5092..86fc98eaa2 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 33ee5afa9a..c0697c8080 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 3c07ff9e88..d129431062 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 412db1481e..01f506c8c4 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 28089b2f1f..b726a0b366 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 9f3056631b..54bdfc0c84 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 0720d0d775..cf69b5d86e 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 a5dcf6f6f9..640eca5f44 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 bc1f526134..cc640fad70 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 f3af0e66f3..e39ca61f8b 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 -- GitLab