summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Arko <andre@arko.net>2011-01-19 14:36:30 -0800
committerAndre Arko <andre@arko.net>2011-01-19 14:36:30 -0800
commit5ff5cbc15d734e235f7129cdca72d9050eb5e520 (patch)
tree4c6ee3468e850c92895fdb1e834ae7f96ba32211
parent9bed2b6a374101a905de996ef056ec706051bcce (diff)
downloadbundler-5ff5cbc15d734e235f7129cdca72d9050eb5e520.tar.gz
Tests and fix for Bundler.require removing gems from
-rw-r--r--lib/bundler.rb5
-rw-r--r--spec/runtime/setup_spec.rb63
2 files changed, 65 insertions, 3 deletions
diff --git a/lib/bundler.rb b/lib/bundler.rb
index 9289e8540d..dd1ad009b0 100644
--- a/lib/bundler.rb
+++ b/lib/bundler.rb
@@ -93,9 +93,12 @@ module Bundler
end
def setup(*groups)
+ # Just return if all groups are already loaded
+ return @setup if defined?(@setup)
+
if groups.empty?
# Load all groups, but only once
- @setup ||= load.setup
+ @setup = load.setup
else
@completed_groups ||= []
# Figure out which groups haven't been loaded yet
diff --git a/spec/runtime/setup_spec.rb b/spec/runtime/setup_spec.rb
index 40847a0b2b..fe755238fd 100644
--- a/spec/runtime/setup_spec.rb
+++ b/spec/runtime/setup_spec.rb
@@ -1,6 +1,65 @@
require "spec_helper"
describe "Bundler.setup" do
+ describe "with no arguments" do
+ it "makes all groups available" do
+ install_gemfile <<-G
+ source "file://#{gem_repo1}"
+ gem "rack", :group => :test
+ G
+
+ ruby <<-RUBY
+ require 'rubygems'
+ require 'bundler'
+ Bundler.setup
+
+ require 'rack'
+ puts RACK
+ RUBY
+ err.should == ""
+ out.should == "1.0.0"
+ end
+ end
+
+ describe "when called with groups" do
+ before(:each) do
+ install_gemfile <<-G
+ source "file://#{gem_repo1}"
+ gem "rack", :group => :test
+ G
+ end
+
+ it "doesn't make all groups available" do
+ ruby <<-RUBY
+ require 'rubygems'
+ require 'bundler'
+ Bundler.setup(:default)
+
+ begin
+ require 'rack'
+ rescue LoadError
+ puts "WIN"
+ end
+ RUBY
+ err.should == ""
+ out.should == "WIN"
+ end
+
+ it "leaves all groups available if they were already" do
+ ruby <<-RUBY
+ require 'rubygems'
+ require 'bundler'
+ Bundler.setup
+ Bundler.setup(:default)
+
+ require 'rack'
+ puts RACK
+ RUBY
+ err.should == ""
+ out.should == "1.0.0"
+ end
+ end
+
it "raises if the Gemfile was not yet installed" do
gemfile <<-G
source "file://#{gem_repo1}"
@@ -611,8 +670,8 @@ describe "Bundler.setup" do
Bundler.load
RUBY
- err.should be_empty
- out.should be_empty
+ err.should == ""
+ out.should == ""
end
end