261 lines
6.4 KiB
Ruby
261 lines
6.4 KiB
Ruby
|
require "spec_helper"
|
||
|
|
||
|
describe "bundle install --standalone" do
|
||
|
describe "with simple gems" do
|
||
|
before do
|
||
|
install_gemfile <<-G, :standalone => true
|
||
|
source "file://#{gem_repo1}"
|
||
|
gem "rails"
|
||
|
G
|
||
|
end
|
||
|
|
||
|
it "still makes the gems available to normal bundler" do
|
||
|
should_be_installed "actionpack 2.3.2", "rails 2.3.2"
|
||
|
end
|
||
|
|
||
|
it "generates a bundle/bundler/setup.rb" do
|
||
|
expect(bundled_app("bundle/bundler/setup.rb")).to exist
|
||
|
end
|
||
|
|
||
|
it "makes the gems available without bundler" do
|
||
|
ruby <<-RUBY, :no_lib => true
|
||
|
$:.unshift File.expand_path("bundle")
|
||
|
require "bundler/setup"
|
||
|
|
||
|
require "actionpack"
|
||
|
puts ACTIONPACK
|
||
|
RUBY
|
||
|
|
||
|
expect(out).to eq("2.3.2")
|
||
|
end
|
||
|
|
||
|
it "works on a different system" do
|
||
|
FileUtils.mv(bundled_app, "#{bundled_app}2")
|
||
|
Dir.chdir("#{bundled_app}2")
|
||
|
|
||
|
ruby <<-RUBY, :no_lib => true
|
||
|
$:.unshift File.expand_path("bundle")
|
||
|
require "bundler/setup"
|
||
|
|
||
|
require "actionpack"
|
||
|
puts ACTIONPACK
|
||
|
RUBY
|
||
|
|
||
|
expect(out).to eq("2.3.2")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "with a combination of gems and git repos" do
|
||
|
before do
|
||
|
build_git "devise", "1.0"
|
||
|
|
||
|
install_gemfile <<-G, :standalone => true
|
||
|
source "file://#{gem_repo1}"
|
||
|
gem "rails"
|
||
|
gem "devise", :git => "#{lib_path('devise-1.0')}"
|
||
|
G
|
||
|
end
|
||
|
|
||
|
it "still makes the gems available to normal bundler" do
|
||
|
should_be_installed "actionpack 2.3.2", "rails 2.3.2", "devise 1.0"
|
||
|
end
|
||
|
|
||
|
it "generates a bundle/bundler/setup.rb" do
|
||
|
expect(bundled_app("bundle/bundler/setup.rb")).to exist
|
||
|
end
|
||
|
|
||
|
it "makes the gems available without bundler" do
|
||
|
ruby <<-RUBY, :no_lib => true
|
||
|
$:.unshift File.expand_path("bundle")
|
||
|
require "bundler/setup"
|
||
|
|
||
|
require "devise"
|
||
|
require "actionpack"
|
||
|
puts DEVISE
|
||
|
puts ACTIONPACK
|
||
|
RUBY
|
||
|
|
||
|
expect(out).to eq("1.0\n2.3.2")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "with groups" do
|
||
|
before do
|
||
|
build_git "devise", "1.0"
|
||
|
|
||
|
install_gemfile <<-G, :standalone => true
|
||
|
source "file://#{gem_repo1}"
|
||
|
gem "rails"
|
||
|
|
||
|
group :test do
|
||
|
gem "rspec"
|
||
|
gem "rack-test"
|
||
|
end
|
||
|
G
|
||
|
end
|
||
|
|
||
|
it "makes the gems available without bundler" do
|
||
|
ruby <<-RUBY, :no_lib => true
|
||
|
$:.unshift File.expand_path("bundle")
|
||
|
require "bundler/setup"
|
||
|
|
||
|
require "actionpack"
|
||
|
require "spec"
|
||
|
require "rack/test"
|
||
|
puts ACTIONPACK
|
||
|
puts SPEC
|
||
|
puts RACK_TEST
|
||
|
RUBY
|
||
|
|
||
|
expect(out).to eq("2.3.2\n1.2.7\n1.0")
|
||
|
end
|
||
|
|
||
|
it "allows creating a standalone file with limited groups" do
|
||
|
bundle "install --standalone default"
|
||
|
|
||
|
load_error_ruby <<-RUBY, 'spec', :no_lib => true
|
||
|
$:.unshift File.expand_path("bundle")
|
||
|
require "bundler/setup"
|
||
|
|
||
|
require "actionpack"
|
||
|
puts ACTIONPACK
|
||
|
require "spec"
|
||
|
RUBY
|
||
|
|
||
|
expect(out).to eq("2.3.2")
|
||
|
expect(err).to eq("ZOMG LOAD ERROR")
|
||
|
end
|
||
|
|
||
|
it "allows --without to limit the groups used in a standalone" do
|
||
|
bundle "install --standalone --without test"
|
||
|
|
||
|
load_error_ruby <<-RUBY, 'spec', :no_lib => true
|
||
|
$:.unshift File.expand_path("bundle")
|
||
|
require "bundler/setup"
|
||
|
|
||
|
require "actionpack"
|
||
|
puts ACTIONPACK
|
||
|
require "spec"
|
||
|
RUBY
|
||
|
|
||
|
expect(out).to eq("2.3.2")
|
||
|
expect(err).to eq("ZOMG LOAD ERROR")
|
||
|
end
|
||
|
|
||
|
it "allows --path to change the location of the standalone bundle" do
|
||
|
bundle "install --standalone --path path/to/bundle"
|
||
|
|
||
|
ruby <<-RUBY, :no_lib => true, :expect_err => false
|
||
|
$:.unshift File.expand_path("path/to/bundle")
|
||
|
require "bundler/setup"
|
||
|
|
||
|
require "actionpack"
|
||
|
puts ACTIONPACK
|
||
|
RUBY
|
||
|
|
||
|
expect(out).to eq("2.3.2")
|
||
|
end
|
||
|
|
||
|
it "allows remembered --without to limit the groups used in a standalone" do
|
||
|
bundle "install --without test"
|
||
|
bundle "install --standalone"
|
||
|
|
||
|
load_error_ruby <<-RUBY, 'spec', :no_lib => true
|
||
|
$:.unshift File.expand_path("bundle")
|
||
|
require "bundler/setup"
|
||
|
|
||
|
require "actionpack"
|
||
|
puts ACTIONPACK
|
||
|
require "spec"
|
||
|
RUBY
|
||
|
|
||
|
expect(out).to eq("2.3.2")
|
||
|
expect(err).to eq("ZOMG LOAD ERROR")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "with gemcutter's dependency API" do
|
||
|
let(:source_uri) { "http://localgemserver.test" }
|
||
|
|
||
|
describe "simple gems" do
|
||
|
before do
|
||
|
gemfile <<-G
|
||
|
source "#{source_uri}"
|
||
|
gem "rails"
|
||
|
G
|
||
|
end
|
||
|
|
||
|
it "should run without errors" do
|
||
|
bundle "install --standalone", :artifice => "endpoint", :exitstatus => true
|
||
|
|
||
|
expect(@exitstatus).to eq(0)
|
||
|
end
|
||
|
|
||
|
it "still makes the gems available to normal bundler" do
|
||
|
bundle "install --standalone", :artifice => "endpoint"
|
||
|
|
||
|
should_be_installed "actionpack 2.3.2", "rails 2.3.2"
|
||
|
end
|
||
|
|
||
|
it "generates a bundle/bundler/setup.rb" do
|
||
|
bundle "install --standalone", :artifice => "endpoint"
|
||
|
|
||
|
expect(bundled_app("bundle/bundler/setup.rb")).to exist
|
||
|
end
|
||
|
|
||
|
it "makes the gems available without bundler" do
|
||
|
bundle "install --standalone", :artifice => "endpoint"
|
||
|
|
||
|
ruby <<-RUBY, :no_lib => true
|
||
|
$:.unshift File.expand_path("bundle")
|
||
|
require "bundler/setup"
|
||
|
|
||
|
require "actionpack"
|
||
|
puts ACTIONPACK
|
||
|
RUBY
|
||
|
|
||
|
expect(out).to eq("2.3.2")
|
||
|
end
|
||
|
|
||
|
it "works on a different system" do
|
||
|
bundle "install --standalone", :artifice => "endpoint"
|
||
|
|
||
|
FileUtils.mv(bundled_app, "#{bundled_app}2")
|
||
|
Dir.chdir("#{bundled_app}2")
|
||
|
|
||
|
ruby <<-RUBY, :no_lib => true
|
||
|
$:.unshift File.expand_path("bundle")
|
||
|
require "bundler/setup"
|
||
|
|
||
|
require "actionpack"
|
||
|
puts ACTIONPACK
|
||
|
RUBY
|
||
|
|
||
|
expect(out).to eq("2.3.2")
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "with --binstubs" do
|
||
|
before do
|
||
|
install_gemfile <<-G, :standalone => true, :binstubs => true
|
||
|
source "file://#{gem_repo1}"
|
||
|
gem "rails"
|
||
|
G
|
||
|
end
|
||
|
|
||
|
it "creates stubs that use the standalone load path" do
|
||
|
Dir.chdir(bundled_app) do
|
||
|
expect(`bin/rails -v`.chomp).to eql "2.3.2"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
it "creates stubs that can be executed from anywhere" do
|
||
|
require 'tmpdir'
|
||
|
Dir.chdir(Dir.tmpdir) do
|
||
|
expect(`#{bundled_app}/bin/rails -v`.chomp).to eql "2.3.2"
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|