diff options
| author | Mike McQuaid | 2016-11-20 11:59:57 +0000 |
|---|---|---|
| committer | GitHub | 2016-11-20 11:59:57 +0000 |
| commit | a16bfa57e84ed08b9653a0eabf31588cf569831a (patch) | |
| tree | a99d16bddab77f307ec81b9d55eb93f6d79508d0 /Library | |
| parent | 7fbab8be9c1aa7b3a5a57ab1362fc128d12135ed (diff) | |
| parent | bcc9002214955d588f323c0854ab3f4e2de9904f (diff) | |
| download | brew-a16bfa57e84ed08b9653a0eabf31588cf569831a.tar.bz2 | |
Merge pull request #1537 from umireon/nonfatal-requirement-message-once
install: suppress redundunt warnings with `depends_on` requirement
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/formula_installer.rb | 17 | ||||
| -rw-r--r-- | Library/Homebrew/test/install_test.rb | 23 |
2 files changed, 38 insertions, 2 deletions
diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index c05b0da60..19b619625 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -52,6 +52,7 @@ class FormulaInstaller @debug = false @options = Options.new @invalid_option_names = [] + @requirement_messages = [] @@attempted ||= Set.new @@ -251,6 +252,7 @@ class FormulaInstaller opoo "Bottle installation failed: building from source." raise BuildToolsError, [formula] unless DevelopmentTools.installed? else + puts_requirement_messages @poured_bottle = true end end @@ -260,6 +262,7 @@ class FormulaInstaller unless @poured_bottle not_pouring = !pour_bottle || @pour_failed compute_and_install_dependencies if not_pouring && !ignore_deps? + puts_requirement_messages build clean @@ -334,17 +337,21 @@ class FormulaInstaller end def check_requirements(req_map) + @requirement_messages = [] fatals = [] req_map.each_pair do |dependent, reqs| next if dependent.installed? reqs.each do |req| - puts "#{dependent}: #{req.message}" + @requirement_messages << "#{dependent}: #{req.message}" fatals << req if req.fatal? end end - raise UnsatisfiedRequirements, fatals unless fatals.empty? + return if fatals.empty? + + puts_requirement_messages + raise UnsatisfiedRequirements, fatals end def install_requirement_default_formula?(req, dependent, build) @@ -831,4 +838,10 @@ class FormulaInstaller @@locked.clear @hold_locks = false end + + def puts_requirement_messages + return unless @requirement_messages + return if @requirement_messages.empty? + puts @requirement_messages + end end diff --git a/Library/Homebrew/test/install_test.rb b/Library/Homebrew/test/install_test.rb index fa1057a02..9fe5fff0e 100644 --- a/Library/Homebrew/test/install_test.rb +++ b/Library/Homebrew/test/install_test.rb @@ -27,4 +27,27 @@ class IntegrationCommandTestInstall < IntegrationCommandTestCase assert_match "testball1: this formula has no --with-fo option so it will be ignored!", cmd("install", "testball1", "--with-fo") end + + def test_install_with_nonfatal_requirement + setup_test_formula "testball1", <<-EOS.undent + class NonFatalRequirement < Requirement + satisfy { false } + end + depends_on NonFatalRequirement + EOS + message = "NonFatalRequirement unsatisfied!" + assert_equal 1, cmd("install", "testball1").scan(message).size + end + + def test_install_with_fatal_requirement + setup_test_formula "testball1", <<-EOS.undent + class FatalRequirement < Requirement + fatal true + satisfy { false } + end + depends_on FatalRequirement + EOS + message = "FatalRequirement unsatisfied!" + assert_equal 1, cmd_fail("install", "testball1").scan(message).size + end end |
