diff options
author | Andre Arko <andre@arko.net> | 2011-01-19 14:36:30 -0800 |
---|---|---|
committer | Andre Arko <andre@arko.net> | 2011-01-19 14:36:30 -0800 |
commit | 5ff5cbc15d734e235f7129cdca72d9050eb5e520 (patch) | |
tree | 4c6ee3468e850c92895fdb1e834ae7f96ba32211 | |
parent | 9bed2b6a374101a905de996ef056ec706051bcce (diff) | |
download | bundler-5ff5cbc15d734e235f7129cdca72d9050eb5e520.tar.gz |
Tests and fix for Bundler.require removing gems from
-rw-r--r-- | lib/bundler.rb | 5 | ||||
-rw-r--r-- | spec/runtime/setup_spec.rb | 63 |
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 |