instiki/vendor/plugins/bundler/gems/bundler-1.0.15/spec/other/check_spec.rb

222 lines
4.9 KiB
Ruby
Raw Normal View History

2010-12-07 04:11:19 +01:00
require "spec_helper"
describe "bundle check" do
it "returns success when the Gemfile is satisfied" do
install_gemfile <<-G
source "file://#{gem_repo1}"
gem "rails"
G
bundle :check, :exitstatus => true
@exitstatus.should eq(0)
2010-12-07 04:11:19 +01:00
out.should == "The Gemfile's dependencies are satisfied"
end
it "works with the --gemfile flag when not in the directory" do
install_gemfile <<-G
source "file://#{gem_repo1}"
gem "rails"
G
Dir.chdir tmp
bundle "check --gemfile bundled_app/Gemfile"
out.should == "The Gemfile's dependencies are satisfied"
end
it "creates a Gemfile.lock if one did not exist" do
install_gemfile <<-G
source "file://#{gem_repo1}"
gem "rails"
G
FileUtils.rm("Gemfile.lock")
bundle "check"
bundled_app("Gemfile.lock").should exist
end
it "prints a generic error if the missing gems are unresolvable" do
system_gems ["rails-2.3.2"]
gemfile <<-G
source "file://#{gem_repo1}"
gem "rails"
G
bundle :check
out.should include("Your Gemfile's dependencies could not be satisfied")
end
it "prints a generic error if a Gemfile.lock does not exist and a toplevel dependency does not exist" do
gemfile <<-G
source "file://#{gem_repo1}"
gem "rails"
G
bundle :check, :exitstatus => true
@exitstatus.should be > 0
2010-12-07 04:11:19 +01:00
out.should include("could not be satisfied")
end
it "prints a generic message if you changed your lockfile" do
install_gemfile <<-G
source "file://#{gem_repo1}"
gem 'rails'
G
install_gemfile <<-G
source "file://#{gem_repo1}"
gem 'rails_fail'
G
gemfile <<-G
source "file://#{gem_repo1}"
gem "rails"
gem "rails_fail"
G
bundle :check
out.should include("Your Gemfile's dependencies could not be satisfied")
end
it "remembers --without option from install" do
gemfile <<-G
source "file://#{gem_repo1}"
group :foo do
gem "rack"
end
G
bundle "install --without foo"
bundle "check", :exitstatus => true
@exitstatus.should eq(0)
2010-12-07 04:11:19 +01:00
out.should include("The Gemfile's dependencies are satisfied")
end
it "ensures that gems are actually installed and not just cached" do
gemfile <<-G
source "file://#{gem_repo1}"
gem "rack", :group => :foo
G
bundle "install --without foo"
gemfile <<-G
source "file://#{gem_repo1}"
gem "rack"
G
bundle "check", :exitstatus => true
out.should include("* rack (1.0.0)")
@exitstatus.should == 1
end
it "ignores missing gems restricted to other platforms" do
system_gems "rack-1.0.0"
gemfile <<-G
source "file://#{gem_repo1}"
gem "rack"
platforms :#{not_local_tag} do
gem "activesupport"
end
G
lockfile <<-G
GEM
remote: file:#{gem_repo1}/
specs:
activesupport (2.3.5)
rack (1.0.0)
PLATFORMS
#{local}
#{not_local}
DEPENDENCIES
rack
activesupport
G
bundle :check
out.should == "The Gemfile's dependencies are satisfied"
end
it "works with env conditionals" do
system_gems "rack-1.0.0"
gemfile <<-G
source "file://#{gem_repo1}"
gem "rack"
env :NOT_GOING_TO_BE_SET do
gem "activesupport"
end
G
lockfile <<-G
GEM
remote: file:#{gem_repo1}/
specs:
activesupport (2.3.5)
rack (1.0.0)
PLATFORMS
#{local}
#{not_local}
DEPENDENCIES
rack
activesupport
G
bundle :check
out.should == "The Gemfile's dependencies are satisfied"
end
it "outputs an error when the default Gemfile is not found" do
bundle :check, :exitstatus => true
@exitstatus.should eq(10)
2010-12-07 04:11:19 +01:00
out.should include("Could not locate Gemfile")
end
it "should not crash when called multiple times on a new machine" do
gemfile <<-G
gem 'rails', '3.0.0.beta3'
gem 'paperclip', :git => 'git://github.com/thoughtbot/paperclip.git'
G
simulate_new_machine
bundle "check"
last_out = out
3.times do |i|
bundle :check
out.should eq(last_out)
2010-12-07 04:11:19 +01:00
err.should be_empty
end
end
describe "when locked" do
before :each do
system_gems "rack-1.0.0"
install_gemfile <<-G
source "file://#{gem_repo1}"
gem "rack", "1.0"
G
end
it "returns success when the Gemfile is satisfied" do
bundle :install
bundle :check, :exitstatus => true
@exitstatus.should eq(0)
2010-12-07 04:11:19 +01:00
out.should == "The Gemfile's dependencies are satisfied"
end
it "shows what is missing with the current Gemfile if it is not satisfied" do
simulate_new_machine
bundle :check
out.should match(/The following gems are missing/)
out.should include("* rack (1.0")
end
end
end