instiki/vendor/plugins/bundler/gems/bundler-1.0.15/spec/other/check_spec.rb
Jacques Distler 9e909d5be3 Update Rails, rails_xss and Bundler
Update Bundler to 1.0.15.
Update Rails to 2.3.12.
Update rails_xss plugin.

The latter two were the
source of a considerable
amount of grief, as rails_xss
is now MUCH stricter about what
string methods can be used.

Also made it possible to use
rake 0.9.x with Instiki. But
you probably REALLY want to use

 ruby bundle exec rake ...

instead of just saying

 rake ....
2011-06-15 00:43:38 -05:00

222 lines
4.9 KiB
Ruby

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)
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
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)
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)
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)
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)
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