Support jruby external dependencies.
* Add tests that run only if 'jruby' is installed. * Note that if your formula has :jruby deps, it should likely "depend_on 'jruby'" as well.
This commit is contained in:
parent
72ef9f4aaa
commit
cfc8fca74d
@ -475,7 +475,7 @@ private
|
|||||||
|
|
||||||
def depends_on name
|
def depends_on name
|
||||||
@deps ||= []
|
@deps ||= []
|
||||||
@external_deps ||= {:python => [], :ruby => [], :perl => []}
|
@external_deps ||= {:python => [], :perl => [], :ruby => [], :jruby => []}
|
||||||
|
|
||||||
case name
|
case name
|
||||||
when String
|
when String
|
||||||
@ -483,7 +483,7 @@ private
|
|||||||
when Hash
|
when Hash
|
||||||
key, value = name.shift
|
key, value = name.shift
|
||||||
case value
|
case value
|
||||||
when :python, :ruby, :perl
|
when :python, :perl, :ruby, :jruby
|
||||||
@external_deps[value] << key
|
@external_deps[value] << key
|
||||||
return
|
return
|
||||||
when :optional, :recommended
|
when :optional, :recommended
|
||||||
|
@ -43,6 +43,13 @@ Homebrew does not provide formulae for Ruby dependencies, rubygems does:
|
|||||||
gem install #{dep}
|
gem install #{dep}
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
def jrberr dep; <<-EOS
|
||||||
|
Unsatisfied dependency "#{dep}"
|
||||||
|
Homebrew does not provide formulae for JRuby dependencies, rubygems does:
|
||||||
|
|
||||||
|
jruby -S gem install #{dep}
|
||||||
|
EOS
|
||||||
|
end
|
||||||
|
|
||||||
def check_external_deps f
|
def check_external_deps f
|
||||||
return unless f.external_deps
|
return unless f.external_deps
|
||||||
@ -56,6 +63,9 @@ Homebrew does not provide formulae for Ruby dependencies, rubygems does:
|
|||||||
f.external_deps[:ruby].each do |dep|
|
f.external_deps[:ruby].each do |dep|
|
||||||
raise rberr(dep) unless quiet_system "/usr/bin/env", "ruby", "-rubygems", "-e", "require '#{dep}'"
|
raise rberr(dep) unless quiet_system "/usr/bin/env", "ruby", "-rubygems", "-e", "require '#{dep}'"
|
||||||
end
|
end
|
||||||
|
f.external_deps[:jruby].each do |dep|
|
||||||
|
raise rberr(dep) unless quiet_system "/usr/bin/env", "jruby", "-rubygems", "-e", "require '#{dep}'"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_formula_deps f
|
def check_formula_deps f
|
||||||
|
@ -27,6 +27,10 @@ class DontActuallyInstall < FormulaInstaller
|
|||||||
def rberr dep
|
def rberr dep
|
||||||
"Ruby module install message."
|
"Ruby module install message."
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def jrberr dep
|
||||||
|
"JRuby module install message."
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -79,6 +83,22 @@ class GoodRubyBall <TestBall
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class BadJRubyBall <TestBall
|
||||||
|
depends_on "notapackage" => :jruby
|
||||||
|
|
||||||
|
def initialize name=nil
|
||||||
|
super "uses_jruby_ball"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class GoodJRubyBall <TestBall
|
||||||
|
depends_on "date" => :jruby
|
||||||
|
|
||||||
|
def initialize name=nil
|
||||||
|
super "uses_jruby_ball"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
class ExternalDepsTests < Test::Unit::TestCase
|
class ExternalDepsTests < Test::Unit::TestCase
|
||||||
def check_deps_fail f
|
def check_deps_fail f
|
||||||
@ -117,4 +137,13 @@ class ExternalDepsTests < Test::Unit::TestCase
|
|||||||
def test_good_ruby_deps
|
def test_good_ruby_deps
|
||||||
check_deps_pass GoodRubyBall
|
check_deps_pass GoodRubyBall
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Only run these next two tests if jruby is installed.
|
||||||
|
def test_bad_jruby_deps
|
||||||
|
check_deps_fail BadJRubyBall unless `/usr/bin/which jruby`.chomp.empty?
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_good_jruby_deps
|
||||||
|
check_deps_pass GoodJRubyBall unless `/usr/bin/which jruby`.chomp.empty?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user