9e909d5be3
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 ....
222 lines
4.9 KiB
Ruby
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
|