require "spec_helper" describe "bundle update" do before :each do build_repo2 install_gemfile <<-G source "file://#{gem_repo2}" gem "activesupport" gem "rack-obama" G end describe "with no arguments" do it "updates the entire bundle" do update_repo2 do build_gem "activesupport", "3.0" end bundle "update" should_be_installed "rack 1.2", "rack-obama 1.0", "activesupport 3.0" end it "doesn't delete the Gemfile.lock file if something goes wrong" do gemfile <<-G source "file://#{gem_repo2}" gem "activesupport" gem "rack-obama" exit! G bundle "update" bundled_app("Gemfile.lock").should exist end end describe "--quiet argument" do it 'shows UI messages without --quiet argument' do bundle "update" out.should include("Fetching source") end it 'does not show UI messages with --quiet argument' do bundle "update --quiet" out.should_not include("Fetching source") end end describe "with a top level dependency" do it "unlocks all child dependencies that are unrelated to other locked dependencies" do update_repo2 do build_gem "activesupport", "3.0" end bundle "update rack-obama" should_be_installed "rack 1.2", "rack-obama 1.0", "activesupport 2.3.5" end end describe "with --local option" do it "doesn't hit repo2" do FileUtils.rm_rf(gem_repo2) bundle "update --local" out.should_not match(/Fetching source index/) end end end describe "bundle update in more complicated situations" do before :each do build_repo2 end it "will eagerly unlock dependencies of a specified gem" do install_gemfile <<-G source "file://#{gem_repo2}" gem "thin" gem "rack-obama" G update_repo2 do build_gem "thin" , '2.0' do |s| s.add_dependency "rack" end end bundle "update thin" should_be_installed "thin 2.0", "rack 1.2", "rack-obama 1.0" end end describe "bundle update without a Gemfile.lock" do it "should not explode" do build_repo2 gemfile <<-G source "file://#{gem_repo2}" gem "rack", "1.0" G bundle "update" should_be_installed "rack 1.0.0" end end describe "bundle update when a gem depends on a newer version of bundler" do before(:each) do build_repo2 do build_gem "rails", "3.0.1" do |s| s.add_dependency "bundler", Bundler::VERSION.succ end end gemfile <<-G source "file://#{gem_repo2}" gem "rails", "3.0.1" G end it "should not explode" do bundle "update" err.should be_empty end it "should explain that bundler conflicted" do bundle "update" out.should_not =~ /in snapshot/i out.should =~ /current Bundler version/i out.should =~ /perhaps you need to update bundler/i end end