Merge pull request #1537 from umireon/nonfatal-requirement-message-once

install: suppress redundunt warnings with `depends_on` requirement
This commit is contained in:
Mike McQuaid 2016-11-20 11:59:57 +00:00 committed by GitHub
commit a16bfa57e8
2 changed files with 38 additions and 2 deletions

View File

@ -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

View File

@ -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