diff options
| author | Adam Vandenberg | 2010-04-08 14:50:06 -0700 | 
|---|---|---|
| committer | Adam Vandenberg | 2010-04-09 11:21:35 -0700 | 
| commit | bada8fe2e6edaa36dfbc21cd5160b57a654e9309 (patch) | |
| tree | bbee226a8cad70968196bb9c7a65b284ec684e1f | |
| parent | 08c981ef8a7b377c5b695a91b20138ff795adf51 (diff) | |
| download | homebrew-bada8fe2e6edaa36dfbc21cd5160b57a654e9309.tar.bz2 | |
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.
| -rw-r--r-- | Library/Homebrew/formula.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/formula_installer.rb | 10 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_external_deps.rb | 29 | 
3 files changed, 41 insertions, 2 deletions
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 66219e726..9b5e7254f 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -475,7 +475,7 @@ private      def depends_on name        @deps ||= [] -      @external_deps ||= {:python => [], :ruby => [], :perl => []} +      @external_deps ||= {:python => [], :perl => [], :ruby => [], :jruby => []}        case name        when String @@ -483,7 +483,7 @@ private        when Hash          key, value = name.shift          case value -        when :python, :ruby, :perl +        when :python, :perl, :ruby, :jruby            @external_deps[value] << key            return          when :optional, :recommended diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 1356be17c..00bef0023 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -43,6 +43,13 @@ Homebrew does not provide formulae for Ruby dependencies, rubygems does:      gem install #{dep}      EOS    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      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|        raise rberr(dep) unless quiet_system "/usr/bin/env", "ruby", "-rubygems", "-e", "require '#{dep}'"      end +    f.external_deps[:jruby].each do |dep| +      raise rberr(dep) unless quiet_system "/usr/bin/env", "jruby", "-rubygems", "-e", "require '#{dep}'" +    end    end    def check_formula_deps f diff --git a/Library/Homebrew/test/test_external_deps.rb b/Library/Homebrew/test/test_external_deps.rb index 373d334ba..2b96e7678 100644 --- a/Library/Homebrew/test/test_external_deps.rb +++ b/Library/Homebrew/test/test_external_deps.rb @@ -27,6 +27,10 @@ class DontActuallyInstall < FormulaInstaller    def rberr dep      "Ruby module install message."    end + +  def jrberr dep +    "JRuby module install message." +  end  end @@ -79,6 +83,22 @@ class GoodRubyBall <TestBall    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    def check_deps_fail f @@ -117,4 +137,13 @@ class ExternalDepsTests < Test::Unit::TestCase    def test_good_ruby_deps      check_deps_pass GoodRubyBall    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  | 
