228 lines
6.1 KiB
Ruby
228 lines
6.1 KiB
Ruby
|
require "spec_helper"
|
||
|
|
||
|
describe ".bundle/config" do
|
||
|
before :each do
|
||
|
gemfile <<-G
|
||
|
source "file://#{gem_repo1}"
|
||
|
gem "rack", "1.0.0"
|
||
|
G
|
||
|
end
|
||
|
|
||
|
describe "BUNDLE_APP_CONFIG" do
|
||
|
it "can be moved with an environment variable" do
|
||
|
ENV['BUNDLE_APP_CONFIG'] = tmp('foo/bar').to_s
|
||
|
bundle "install --path vendor/bundle"
|
||
|
|
||
|
expect(bundled_app('.bundle')).not_to exist
|
||
|
expect(tmp('foo/bar/config')).to exist
|
||
|
should_be_installed "rack 1.0.0"
|
||
|
end
|
||
|
|
||
|
it "can provide a relative path with the environment variable" do
|
||
|
FileUtils.mkdir_p bundled_app('omg')
|
||
|
Dir.chdir bundled_app('omg')
|
||
|
|
||
|
ENV['BUNDLE_APP_CONFIG'] = "../foo"
|
||
|
bundle "install --path vendor/bundle"
|
||
|
|
||
|
expect(bundled_app(".bundle")).not_to exist
|
||
|
expect(bundled_app("../foo/config")).to exist
|
||
|
should_be_installed "rack 1.0.0"
|
||
|
end
|
||
|
|
||
|
it "removes environment.rb from BUNDLE_APP_CONFIG's path" do
|
||
|
FileUtils.mkdir_p(tmp('foo/bar'))
|
||
|
ENV['BUNDLE_APP_CONFIG'] = tmp('foo/bar').to_s
|
||
|
bundle "install"
|
||
|
FileUtils.touch tmp('foo/bar/environment.rb')
|
||
|
should_be_installed "rack 1.0.0"
|
||
|
expect(tmp('foo/bar/environment.rb')).not_to exist
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "global" do
|
||
|
before(:each) { bundle :install }
|
||
|
|
||
|
it "is the default" do
|
||
|
bundle "config foo global"
|
||
|
run "puts Bundler.settings[:foo]"
|
||
|
expect(out).to eq("global")
|
||
|
end
|
||
|
|
||
|
it "can also be set explicitly" do
|
||
|
bundle "config --global foo global"
|
||
|
run "puts Bundler.settings[:foo]"
|
||
|
expect(out).to eq("global")
|
||
|
end
|
||
|
|
||
|
it "has lower precedence than local" do
|
||
|
bundle "config --local foo local"
|
||
|
|
||
|
bundle "config --global foo global"
|
||
|
expect(out).to match(/Your application has set foo to "local"/)
|
||
|
|
||
|
run "puts Bundler.settings[:foo]"
|
||
|
expect(out).to eq("local")
|
||
|
end
|
||
|
|
||
|
it "has lower precedence than env" do
|
||
|
begin
|
||
|
ENV["BUNDLE_FOO"] = "env"
|
||
|
|
||
|
bundle "config --global foo global"
|
||
|
expect(out).to match(/You have a bundler environment variable for foo set to "env"/)
|
||
|
|
||
|
run "puts Bundler.settings[:foo]"
|
||
|
expect(out).to eq("env")
|
||
|
ensure
|
||
|
ENV.delete("BUNDLE_FOO")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
it "can be deleted" do
|
||
|
bundle "config --global foo global"
|
||
|
bundle "config --delete foo"
|
||
|
|
||
|
run "puts Bundler.settings[:foo] == nil"
|
||
|
expect(out).to eq("true")
|
||
|
end
|
||
|
|
||
|
it "warns when overriding" do
|
||
|
bundle "config --global foo previous"
|
||
|
bundle "config --global foo global"
|
||
|
expect(out).to match(/You are replacing the current global value of foo/)
|
||
|
|
||
|
run "puts Bundler.settings[:foo]"
|
||
|
expect(out).to eq("global")
|
||
|
end
|
||
|
|
||
|
it "expands the path at time of setting" do
|
||
|
bundle "config --global local.foo .."
|
||
|
run "puts Bundler.settings['local.foo']"
|
||
|
expect(out).to eq(File.expand_path(Dir.pwd + "/.."))
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "local" do
|
||
|
before(:each) { bundle :install }
|
||
|
|
||
|
it "can also be set explicitly" do
|
||
|
bundle "config --local foo local"
|
||
|
run "puts Bundler.settings[:foo]"
|
||
|
expect(out).to eq("local")
|
||
|
end
|
||
|
|
||
|
it "has higher precedence than env" do
|
||
|
begin
|
||
|
ENV["BUNDLE_FOO"] = "env"
|
||
|
bundle "config --local foo local"
|
||
|
|
||
|
run "puts Bundler.settings[:foo]"
|
||
|
expect(out).to eq("local")
|
||
|
ensure
|
||
|
ENV.delete("BUNDLE_FOO")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
it "can be deleted" do
|
||
|
bundle "config --local foo local"
|
||
|
bundle "config --delete foo"
|
||
|
|
||
|
run "puts Bundler.settings[:foo] == nil"
|
||
|
expect(out).to eq("true")
|
||
|
end
|
||
|
|
||
|
it "warns when overriding" do
|
||
|
bundle "config --local foo previous"
|
||
|
bundle "config --local foo local"
|
||
|
expect(out).to match(/You are replacing the current local value of foo/)
|
||
|
|
||
|
run "puts Bundler.settings[:foo]"
|
||
|
expect(out).to eq("local")
|
||
|
end
|
||
|
|
||
|
it "expands the path at time of setting" do
|
||
|
bundle "config --local local.foo .."
|
||
|
run "puts Bundler.settings['local.foo']"
|
||
|
expect(out).to eq(File.expand_path(Dir.pwd + "/.."))
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "env" do
|
||
|
before(:each) { bundle :install }
|
||
|
|
||
|
it "can set boolean properties via the environment" do
|
||
|
ENV["BUNDLE_FROZEN"] = "true"
|
||
|
|
||
|
run "if Bundler.settings[:frozen]; puts 'true' else puts 'false' end"
|
||
|
expect(out).to eq("true")
|
||
|
end
|
||
|
|
||
|
it "can set negative boolean properties via the environment" do
|
||
|
run "if Bundler.settings[:frozen]; puts 'true' else puts 'false' end"
|
||
|
expect(out).to eq("false")
|
||
|
|
||
|
ENV["BUNDLE_FROZEN"] = "false"
|
||
|
|
||
|
run "if Bundler.settings[:frozen]; puts 'true' else puts 'false' end"
|
||
|
expect(out).to eq("false")
|
||
|
|
||
|
ENV["BUNDLE_FROZEN"] = "0"
|
||
|
|
||
|
run "if Bundler.settings[:frozen]; puts 'true' else puts 'false' end"
|
||
|
expect(out).to eq("false")
|
||
|
|
||
|
ENV["BUNDLE_FROZEN"] = ""
|
||
|
|
||
|
run "if Bundler.settings[:frozen]; puts 'true' else puts 'false' end"
|
||
|
expect(out).to eq("false")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "gem mirrors" do
|
||
|
before(:each) { bundle :install }
|
||
|
|
||
|
it "configures mirrors using keys with `mirror.`" do
|
||
|
bundle "config --local mirror.http://gems.example.org http://gem-mirror.example.org"
|
||
|
run(<<-E)
|
||
|
Bundler.settings.gem_mirrors.each do |k, v|
|
||
|
puts "\#{k} => \#{v}"
|
||
|
end
|
||
|
E
|
||
|
expect(out).to eq("http://gems.example.org/ => http://gem-mirror.example.org/")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "quoting" do
|
||
|
before(:each) { bundle :install }
|
||
|
|
||
|
it "saves quotes" do
|
||
|
bundle "config foo something\\'"
|
||
|
run "puts Bundler.settings[:foo]"
|
||
|
expect(out).to eq("something'")
|
||
|
end
|
||
|
|
||
|
it "doesn't return quotes around values", :ruby => "1.9" do
|
||
|
bundle "config foo '1'"
|
||
|
run "puts Bundler.settings.send(:global_config_file).read"
|
||
|
expect(out).to include("'1'")
|
||
|
run "puts Bundler.settings[:foo]"
|
||
|
expect(out).to eq("1")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "very long lines" do
|
||
|
before(:each) { bundle :install }
|
||
|
let(:long_string) do
|
||
|
"--with-xml2-include=/usr/pkg/include/libxml2 --with-xml2-lib=/usr/pkg/lib --with-xslt-dir=/usr/pkg"
|
||
|
end
|
||
|
|
||
|
it "doesn't wrap values" do
|
||
|
bundle "config foo #{long_string}"
|
||
|
run "puts Bundler.settings[:foo]"
|
||
|
expect(out).to match(long_string)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|