diff options
author | Andre Arko <andre@arko.net> | 2013-10-19 17:07:42 -0700 |
---|---|---|
committer | Andre Arko <andre@arko.net> | 2013-10-19 17:18:18 -0700 |
commit | c402caa94bd3394e1004b99ee70812a7e0f9b3fd (patch) | |
tree | bb3d5056fbb7f5bd93a7cc7a78c7cf4354e4e22c /spec | |
parent | 3940c747b87e2187616aa62558003bec6677d8ad (diff) | |
download | bundler-c402caa94bd3394e1004b99ee70812a7e0f9b3fd.tar.gz |
pull out some group specs
Diffstat (limited to 'spec')
-rw-r--r-- | spec/install/gems/groups_spec.rb | 413 | ||||
-rw-r--r-- | spec/install/gems/simple_case_spec.rb | 58 |
2 files changed, 236 insertions, 235 deletions
diff --git a/spec/install/gems/groups_spec.rb b/spec/install/gems/groups_spec.rb index 70b571ccbc..4321787c7b 100644 --- a/spec/install/gems/groups_spec.rb +++ b/spec/install/gems/groups_spec.rb @@ -1,249 +1,308 @@ require "spec_helper" -describe "bundle install with gem sources" do - describe "with groups" do - describe "installing with no options" do +describe "bundle install with groups" do + + describe "installing with no options" do + before :each do + install_gemfile <<-G + source "file://#{gem_repo1}" + gem "rack" + group :emo do + gem "activesupport", "2.3.5" + end + gem "thin", :groups => [:emo] + G + end + + it "installs gems in the default group" do + should_be_installed "rack 1.0.0" + end + + it "installs gems in a group block into that group" do + should_be_installed "activesupport 2.3.5" + + load_error_run <<-R, 'activesupport', :default + require 'activesupport' + puts ACTIVESUPPORT + R + + expect(err).to eq("ZOMG LOAD ERROR") + end + + it "installs gems with inline :groups into those groups" do + should_be_installed "thin 1.0" + + load_error_run <<-R, 'thin', :default + require 'thin' + puts THIN + R + + expect(err).to eq("ZOMG LOAD ERROR") + end + + it "sets up everything if Bundler.setup is used with no groups" do + out = run("require 'rack'; puts RACK") + expect(out).to eq('1.0.0') + + out = run("require 'activesupport'; puts ACTIVESUPPORT") + expect(out).to eq('2.3.5') + + out = run("require 'thin'; puts THIN") + expect(out).to eq('1.0') + end + + it "removes old groups when new groups are set up" do + load_error_run <<-RUBY, 'thin', :emo + Bundler.setup(:default) + require 'thin' + puts THIN + RUBY + + expect(err).to eq("ZOMG LOAD ERROR") + end + + it "sets up old groups when they have previously been removed" do + out = run <<-RUBY, :emo + Bundler.setup(:default) + Bundler.setup(:default, :emo) + require 'thin'; puts THIN + RUBY + expect(out).to eq('1.0') + end + end + + describe "installing --without" do + describe "with gems assigned to a single group" do before :each do - install_gemfile <<-G + gemfile <<-G source "file://#{gem_repo1}" gem "rack" group :emo do gem "activesupport", "2.3.5" end - gem "thin", :groups => [:emo] G end it "installs gems in the default group" do - should_be_installed "rack 1.0.0" + bundle :install, :without => "emo" + should_be_installed "rack 1.0.0", :groups => [:default] end - it "installs gems in a group block into that group" do - should_be_installed "activesupport 2.3.5" + it "does not install gems from the excluded group" do + bundle :install, :without => "emo" + should_not_be_installed "activesupport 2.3.5", :groups => [:default] + end - load_error_run <<-R, 'activesupport', :default - require 'activesupport' - puts ACTIVESUPPORT - R + it "does not install gems from the previously excluded group" do + bundle :install, :without => "emo" + should_not_be_installed "activesupport 2.3.5" + bundle :install + should_not_be_installed "activesupport 2.3.5" + end - expect(err).to eq("ZOMG LOAD ERROR") + it "does not say it installed gems from the excluded group" do + bundle :install, :without => "emo" + expect(out).not_to include("activesupport") end - it "installs gems with inline :groups into those groups" do - should_be_installed "thin 1.0" + it "allows Bundler.setup for specific groups" do + bundle :install, :without => "emo" + run("require 'rack'; puts RACK", :default) + expect(out).to eq('1.0.0') + end - load_error_run <<-R, 'thin', :default - require 'thin' - puts THIN - R + it "does not effect the resolve" do + gemfile <<-G + source "file://#{gem_repo1}" + gem "activesupport" + group :emo do + gem "rails", "2.3.2" + end + G - expect(err).to eq("ZOMG LOAD ERROR") + bundle :install, :without => "emo" + should_be_installed "activesupport 2.3.2", :groups => [:default] end - it "sets up everything if Bundler.setup is used with no groups" do - out = run("require 'rack'; puts RACK") - expect(out).to eq('1.0.0') + it "still works on a different machine and excludes gems" do + bundle :install, :without => "emo" - out = run("require 'activesupport'; puts ACTIVESUPPORT") - expect(out).to eq('2.3.5') + simulate_new_machine + bundle :install, :without => "emo" - out = run("require 'thin'; puts THIN") - expect(out).to eq('1.0') + should_be_installed "rack 1.0.0", :groups => [:default] + should_not_be_installed "activesupport 2.3.5", :groups => [:default] end - it "removes old groups when new groups are set up" do - load_error_run <<-RUBY, 'thin', :emo - Bundler.setup(:default) - require 'thin' - puts THIN - RUBY + it "still works when BUNDLE_WITHOUT is set" do + ENV["BUNDLE_WITHOUT"] = "emo" - expect(err).to eq("ZOMG LOAD ERROR") + bundle :install + expect(out).not_to include("activesupport") + + should_be_installed "rack 1.0.0", :groups => [:default] + should_not_be_installed "activesupport 2.3.5", :groups => [:default] + + ENV["BUNDLE_WITHOUT"] = nil end - it "sets up old groups when they have previously been removed" do - out = run <<-RUBY, :emo - Bundler.setup(:default) - Bundler.setup(:default, :emo) - require 'thin'; puts THIN - RUBY - expect(out).to eq('1.0') + it "clears without when passed an empty list" do + bundle :install, :without => "emo" + + bundle 'install --without ""' + should_be_installed "activesupport 2.3.5" + end + + it "doesn't clear without when nothing is passed" do + bundle :install, :without => "emo" + + bundle :install + should_not_be_installed "activesupport 2.3.5" end end - describe "installing --without" do - describe "with gems assigned to a single group" do + describe "with gems assigned to multiple groups" do + before :each do + gemfile <<-G + source "file://#{gem_repo1}" + gem "rack" + group :emo, :lolercoaster do + gem "activesupport", "2.3.5" + end + G + end + + it "installs gems in the default group" do + bundle :install, :without => "emo lolercoaster" + should_be_installed "rack 1.0.0" + end + + it "installs the gem if any of its groups are installed" do + bundle "install --without emo" + should_be_installed "rack 1.0.0", "activesupport 2.3.5" + end + + describe "with a gem defined multiple times in different groups" do before :each do gemfile <<-G source "file://#{gem_repo1}" gem "rack" + group :emo do gem "activesupport", "2.3.5" end - G - end - - it "installs gems in the default group" do - bundle :install, :without => "emo" - should_be_installed "rack 1.0.0", :groups => [:default] - end - - it "does not install gems from the excluded group" do - bundle :install, :without => "emo" - should_not_be_installed "activesupport 2.3.5", :groups => [:default] - end - - it "does not install gems from the previously excluded group" do - bundle :install, :without => "emo" - should_not_be_installed "activesupport 2.3.5" - bundle :install - should_not_be_installed "activesupport 2.3.5" - end - - it "does not say it installed gems from the excluded group" do - bundle :install, :without => "emo" - expect(out).not_to include("activesupport") - end - it "allows Bundler.setup for specific groups" do - bundle :install, :without => "emo" - run("require 'rack'; puts RACK", :default) - expect(out).to eq('1.0.0') - end - - it "does not effect the resolve" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "activesupport" - group :emo do - gem "rails", "2.3.2" + group :lolercoaster do + gem "activesupport", "2.3.5" end G - - bundle :install, :without => "emo" - should_be_installed "activesupport 2.3.2", :groups => [:default] end - it "still works on a different machine and excludes gems" do - bundle :install, :without => "emo" - - simulate_new_machine - bundle :install, :without => "emo" - - should_be_installed "rack 1.0.0", :groups => [:default] - should_not_be_installed "activesupport 2.3.5", :groups => [:default] - end - - it "still works when BUNDLE_WITHOUT is set" do - ENV["BUNDLE_WITHOUT"] = "emo" - - bundle :install - expect(out).not_to include("activesupport") - - should_be_installed "rack 1.0.0", :groups => [:default] - should_not_be_installed "activesupport 2.3.5", :groups => [:default] - - ENV["BUNDLE_WITHOUT"] = nil + it "installs the gem w/ option --without emo" do + bundle "install --without emo" + should_be_installed "activesupport 2.3.5" end - it "clears without when passed an empty list" do - bundle :install, :without => "emo" - - bundle 'install --without ""' + it "installs the gem w/ option --without lolercoaster" do + bundle "install --without lolercoaster" should_be_installed "activesupport 2.3.5" end - it "doesn't clear without when nothing is passed" do - bundle :install, :without => "emo" + it "does not install the gem w/ option --without emo lolercoaster" do + bundle "install --without emo lolercoaster" + should_not_be_installed "activesupport 2.3.5" + end - bundle :install + it "does not install the gem w/ option --without 'emo lolercoaster'" do + bundle "install --without 'emo lolercoaster'" should_not_be_installed "activesupport 2.3.5" end end + end - describe "with gems assigned to multiple groups" do - before :each do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - group :emo, :lolercoaster do + describe "nesting groups" do + before :each do + gemfile <<-G + source "file://#{gem_repo1}" + gem "rack" + group :emo do + group :lolercoaster do gem "activesupport", "2.3.5" end - G - end - - it "installs gems in the default group" do - bundle :install, :without => "emo lolercoaster" - should_be_installed "rack 1.0.0" - end + end + G + end - it "installs the gem if any of its groups are installed" do - bundle "install --without emo" - should_be_installed "rack 1.0.0", "activesupport 2.3.5" - end + it "installs gems in the default group" do + bundle :install, :without => "emo lolercoaster" + should_be_installed "rack 1.0.0" + end - describe "with a gem defined multiple times in different groups" do - before :each do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" + it "installs the gem if any of its groups are installed" do + bundle "install --without emo" + should_be_installed "rack 1.0.0", "activesupport 2.3.5" + end - group :emo do - gem "activesupport", "2.3.5" - end + end + end - group :lolercoaster do - gem "activesupport", "2.3.5" - end - G - end + describe "when loading only the default group" do + it "should not load all groups" do + install_gemfile <<-G + source "file://#{gem_repo1}" + gem "rack" + gem "activesupport", :groups => :development + G + + ruby <<-R + require "bundler" + Bundler.setup :default + Bundler.require :default + puts RACK + begin + require "activesupport" + rescue LoadError + puts "no activesupport" + end + R - it "installs the gem w/ option --without emo" do - bundle "install --without emo" - should_be_installed "activesupport 2.3.5" - end + expect(out).to include("1.0") + expect(out).to include("no activesupport") + end + end - it "installs the gem w/ option --without lolercoaster" do - bundle "install --without lolercoaster" - should_be_installed "activesupport 2.3.5" - end - it "does not install the gem w/ option --without emo lolercoaster" do - bundle "install --without emo lolercoaster" - should_not_be_installed "activesupport 2.3.5" - end + describe "when locked and installed with --without" do + before(:each) do + build_repo2 + system_gems "rack-0.9.1" do + install_gemfile <<-G, :without => :rack + source "file://#{gem_repo2}" + gem "rack" - it "does not install the gem w/ option --without 'emo lolercoaster'" do - bundle "install --without 'emo lolercoaster'" - should_not_be_installed "activesupport 2.3.5" + group :rack do + gem "rack_middleware" end - end + G end + end - describe "nesting groups" do - before :each do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - group :emo do - group :lolercoaster do - gem "activesupport", "2.3.5" - end - end - G - end + it "uses the correct versions even if --without was used on the original" do + should_be_installed "rack 0.9.1" + should_not_be_installed "rack_middleware 1.0" + simulate_new_machine - it "installs gems in the default group" do - bundle :install, :without => "emo lolercoaster" - should_be_installed "rack 1.0.0" - end + bundle :install - it "installs the gem if any of its groups are installed" do - bundle "install --without emo" - should_be_installed "rack 1.0.0", "activesupport 2.3.5" - end + should_be_installed "rack 0.9.1" + should_be_installed "rack_middleware 1.0" + end - end + it "does not hit the remote a second time" do + FileUtils.rm_rf gem_repo2 + bundle "install --without rack" + expect(err).to be_empty end end -end + +end
\ No newline at end of file diff --git a/spec/install/gems/simple_case_spec.rb b/spec/install/gems/simple_case_spec.rb index be81ada807..63a6d31289 100644 --- a/spec/install/gems/simple_case_spec.rb +++ b/spec/install/gems/simple_case_spec.rb @@ -397,31 +397,6 @@ describe "bundle install with gem sources" do end end - describe "when loading only the default group" do - it "should not load all groups" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "activesupport", :groups => :development - G - - ruby <<-R - require "bundler" - Bundler.setup :default - Bundler.require :default - puts RACK - begin - require "activesupport" - rescue LoadError - puts "no activesupport" - end - R - - expect(out).to include("1.0") - expect(out).to include("no activesupport") - end - end - describe "when a gem has a YAML gemspec" do before :each do build_repo2 do @@ -589,39 +564,6 @@ describe "bundle install with gem sources" do end end - describe "when locked and installed with --without" do - before(:each) do - build_repo2 - system_gems "rack-0.9.1" do - install_gemfile <<-G, :without => :rack - source "file://#{gem_repo2}" - gem "rack" - - group :rack do - gem "rack_middleware" - end - G - end - end - - it "uses the correct versions even if --without was used on the original" do - should_be_installed "rack 0.9.1" - should_not_be_installed "rack_middleware 1.0" - simulate_new_machine - - bundle :install - - should_be_installed "rack 0.9.1" - should_be_installed "rack_middleware 1.0" - end - - it "does not hit the remote a second time" do - FileUtils.rm_rf gem_repo2 - bundle "install --without rack" - expect(err).to be_empty - end - end - describe "when system_bindir is set" do # On OS X, Gem.bindir defaults to /usr/bin, so system_bindir is useful if # you want to avoid sudo installs for system gems with OS X's default ruby |