test-bot: handle conflicted formulas and unlinked dependencies

these changes are primarily needed for php tap pull requests, as they usally contain multiple formulas depend on conflicting php versions:
- unlink any conflicted formulas
- link any dependencies that are installed and not linked

Closes Homebrew/homebrew#41602.

Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
This commit is contained in:
Andy Blyler 2015-07-11 14:41:27 -04:00 committed by Mike McQuaid
parent 5db82b46b1
commit 653053f184

View File

@ -428,9 +428,32 @@ module Homebrew
return
end
conflicts = formula.conflicts
formula.recursive_dependencies.each do |dependency|
conflicts += dependency.to_formula.conflicts
end
conflicts.each do |conflict|
confict_formula = Formulary.factory(conflict.name)
if confict_formula.installed? && confict_formula.linked_keg.exist?
test "brew", "unlink", "--force", conflict.name
end
end
installed = Utils.popen_read("brew", "list").split("\n")
dependencies = Utils.popen_read("brew", "deps", "--skip-optional",
canonical_formula_name).split("\n")
(installed & dependencies).each do |installed_dependency|
installed_dependency_formula = Formulary.factory(installed_dependency)
if installed_dependency_formula.installed? &&
!installed_dependency_formula.keg_only? &&
!installed_dependency_formula.linked_keg.exist?
test "brew", "link", installed_dependency
end
end
dependencies -= installed
unchanged_dependencies = dependencies - @formulae
changed_dependences = dependencies - unchanged_dependencies