aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMike McQuaid2016-11-20 11:59:57 +0000
committerGitHub2016-11-20 11:59:57 +0000
commita16bfa57e84ed08b9653a0eabf31588cf569831a (patch)
treea99d16bddab77f307ec81b9d55eb93f6d79508d0 /Library
parent7fbab8be9c1aa7b3a5a57ab1362fc128d12135ed (diff)
parentbcc9002214955d588f323c0854ab3f4e2de9904f (diff)
downloadbrew-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.rb17
-rw-r--r--Library/Homebrew/test/install_test.rb23
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