diff --git a/Library/Homebrew/cmd/audit.rb b/Library/Homebrew/cmd/audit.rb index 8c604ba561ce..84054925c833 100755 --- a/Library/Homebrew/cmd/audit.rb +++ b/Library/Homebrew/cmd/audit.rb @@ -420,7 +420,7 @@ def audit if errors puts "#{problem_count} problems in #{brew_count} brews" - exit 1 + Homebrew.failed = true end end end diff --git a/Library/Homebrew/cmd/bottle.rb b/Library/Homebrew/cmd/bottle.rb index b226d3c37bf8..604df4503fe0 100755 --- a/Library/Homebrew/cmd/bottle.rb +++ b/Library/Homebrew/cmd/bottle.rb @@ -4,8 +4,16 @@ module Homebrew extend self def bottle_formula f - return onoe "Formula not installed: #{f.name}" unless f.installed? - return onoe "Formula not installed with '--build-bottle': #{f.name}" unless built_bottle? f + unless f.installed? + onoe "Formula not installed: #{f.name}" + Homebrew.failed = true + return + end + + unless built_bottle? f + onoe "Formula not installed with '--build-bottle': #{f.name}" + Homebrew.failed = true + end directory = Pathname.pwd filename = bottle_filename f diff --git a/Library/Homebrew/cmd/doctor.rb b/Library/Homebrew/cmd/doctor.rb index a8f85d444964..632819e9635e 100644 --- a/Library/Homebrew/cmd/doctor.rb +++ b/Library/Homebrew/cmd/doctor.rb @@ -879,22 +879,19 @@ def check_os_version module Homebrew extend self def doctor - raring_to_brew = true - checks = Checks.new checks.methods.select{ |method| method =~ /^check_/ }.sort.each do |method| out = checks.send(method) unless out.nil? or out.empty? - puts unless raring_to_brew + puts unless Homebrew.failed? lines = out.to_s.split('\n') opoo lines.shift puts lines - raring_to_brew = false + Homebrew.failed = true end end - puts "Your system is raring to brew." if raring_to_brew - exit raring_to_brew ? 0 : 1 + puts "Your system is raring to brew." unless Homebrew.failed? end end diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index e4ffe3268260..ed5826da09f8 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -77,6 +77,7 @@ def install_formulae formulae fi.finish rescue CannotInstallFormulaError => e onoe e.message + Homebrew.failed = true end end end diff --git a/Library/Homebrew/cmd/test.rb b/Library/Homebrew/cmd/test.rb index 9b3e93adf1d1..af774f7e6a53 100644 --- a/Library/Homebrew/cmd/test.rb +++ b/Library/Homebrew/cmd/test.rb @@ -13,21 +13,24 @@ def test # Cannot test uninstalled formulae unless f.installed? puts "#{f.name} not installed" + Homebrew.failed = true next end # Cannot test formulae without a test method unless f.respond_to? :test puts "#{f.name} defines no test" + Homebrew.failed = true next end puts "Testing #{f.name}" begin # tests can also return false to indicate failure - puts "#{f.name}: failed" if f.test == false + raise if f.test == false rescue puts "#{f.name}: failed" + Homebrew.failed = true end end end diff --git a/Library/Homebrew/cmd/uninstall.rb b/Library/Homebrew/cmd/uninstall.rb index cddb8ac65c0b..ce719a3e943e 100644 --- a/Library/Homebrew/cmd/uninstall.rb +++ b/Library/Homebrew/cmd/uninstall.rb @@ -35,5 +35,6 @@ def uninstall rescue MultipleVersionsInstalledError => e onoe e puts "Use `brew remove --force #{e.name}` to remove all versions." + Homebrew.failed = true end end diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb index 671188a3cc9d..7b63e8039249 100644 --- a/Library/Homebrew/cmd/upgrade.rb +++ b/Library/Homebrew/cmd/upgrade.rb @@ -67,9 +67,11 @@ def upgrade_formula f installer.finish rescue CannotInstallFormulaError => e onoe e + Homebrew.failed = true rescue BuildError => e e.dump puts + Homebrew.failed = true ensure # restore previous installation state if build failed outdated_keg.link if outdated_keg and not f.installed? rescue nil diff --git a/Library/Homebrew/global.rb b/Library/Homebrew/global.rb index b29ab0ff9f27..92560859c4a3 100644 --- a/Library/Homebrew/global.rb +++ b/Library/Homebrew/global.rb @@ -79,6 +79,9 @@ def mkpath require 'fileutils' module Homebrew extend self include FileUtils + + attr_accessor :failed + alias_method :failed?, :failed end FORMULA_META_FILES = %w[README README.md ChangeLog CHANGES COPYING LICENSE LICENCE COPYRIGHT AUTHORS] diff --git a/bin/brew b/bin/brew index df0c45d4f4be..eba542724880 100755 --- a/bin/brew +++ b/bin/brew @@ -112,4 +112,6 @@ rescue Exception => e puts " #{Tty.em}#{ISSUES_URL}#{Tty.reset}" puts e.backtrace exit 1 +else + exit 1 if Homebrew.failed? end