summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2010-02-03 22:24:04 -0800
committerJeremy Kemper <jeremy@bitsweat.net>2010-02-03 22:24:04 -0800
commit831af30ea75e760b289e3e2e158e59f194752633 (patch)
tree9380f1eba2bb8e310f5891459d0aa2b103d5f49c
parent931dba2c3c41d6ca4022a7a74c6f2510112d80ee (diff)
downloadbundler-831af30ea75e760b289e3e2e158e59f194752633.tar.gz
Test :default group and multiple groups
-rw-r--r--lib/bundler/environment.rb15
-rw-r--r--spec/runtime/require_spec.rb25
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