diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2010-02-03 22:24:04 -0800 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2010-02-03 22:24:04 -0800 |
commit | 831af30ea75e760b289e3e2e158e59f194752633 (patch) | |
tree | 9380f1eba2bb8e310f5891459d0aa2b103d5f49c | |
parent | 931dba2c3c41d6ca4022a7a74c6f2510112d80ee (diff) | |
download | bundler-831af30ea75e760b289e3e2e158e59f194752633.tar.gz |
Test :default group and multiple groups
-rw-r--r-- | lib/bundler/environment.rb | 15 | ||||
-rw-r--r-- | spec/runtime/require_spec.rb | 25 |
2 files changed, 24 insertions, 16 deletions
diff --git a/lib/bundler/environment.rb b/lib/bundler/environment.rb index f2f4e71aaa..21c7b0b6d3 100644 --- a/lib/bundler/environment.rb +++ b/lib/bundler/environment.rb @@ -20,8 +20,9 @@ module Bundler end def require(*groups) - dependencies_for(*groups).each do |dep| - dep.autorequire.each do |path| + autorequires = autorequires_for_groups(*groups) + groups.each do |group| + (autorequires[group] || []).each do |path| Kernel.require(path) end end @@ -55,7 +56,11 @@ module Bundler end def dependencies_for(*groups) - @definition.actual_dependencies.select { |d| groups.include?(d.group) } + if groups.empty? + dependencies + else + dependencies.select { |d| groups.include?(d.group) } + end end def specs_for(*groups) @@ -164,8 +169,8 @@ module Bundler details end - def autorequires_for_groups - groups = dependencies.map { |dep| dep.group }.uniq + def autorequires_for_groups(*groups) + groups = dependencies.map { |dep| dep.group }.uniq if groups.empty? groups.inject({}) do |hash, group| hash[group] = dependencies_for(group).map { |dep| dep.autorequire }.flatten hash diff --git a/spec/runtime/require_spec.rb b/spec/runtime/require_spec.rb index 4f191ad8e1..c9c391a473 100644 --- a/spec/runtime/require_spec.rb +++ b/spec/runtime/require_spec.rb @@ -3,38 +3,41 @@ require File.expand_path('../../spec_helper', __FILE__) describe "Bundler.require" do before :each do build_lib "one", "1.0.0" do |s| - s.write "lib/baz.rb", "puts 'WIN'" - s.write "lib/qux.rb", "puts 'WIN'" + s.write "lib/baz.rb", "puts 'baz'" + s.write "lib/qux.rb", "puts 'qux'" end build_lib "two", "1.0.0" do |s| - s.write "lib/two.rb", "puts 'WIN'" + s.write "lib/two.rb", "puts 'two'" end build_lib "three", "1.0.0" do |s| - s.write "lib/three.rb", "puts 'LOSE'" + s.write "lib/three.rb", "puts 'three'" end gemfile <<-G path "#{lib_path('one-1.0.0')}" path "#{lib_path('two-1.0.0')}" path "#{lib_path('three-1.0.0')}" - gem "one", :group => "bar", :require => %w(baz qux) - gem "two", :group => "bar" - gem "three", :group => "not" + gem "one", :group => :bar, :require => %w(baz qux) + gem "two" + gem "three", :group => :not G end it "requires the gems" do - run "Bundler.require('bar')" - out.should == "WIN\nWIN\nWIN" + run "Bundler.require(:bar)" + out.should == "baz\nqux" + + run "Bundler.require(:default, :bar)" + out.should == "two\nbaz\nqux" end it "requires the locked gems" do bundle :lock env = bundled_app(".bundle/environment.rb") - out = ruby("require '#{env}'; Bundler.setup('bar'); Bundler.require('bar')") - out.should == "WIN\nWIN\nWIN" + out = ruby("require '#{env}'; Bundler.setup(:default, :bar); Bundler.require(:default, :bar)") + out.should == "two\nbaz\nqux" end end |