summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2020-02-03 11:50:59 +0100
committerDavid Rodríguez <deivid.rodriguez@riseup.net>2020-02-03 12:27:26 +0100
commit2a62902a202c3fc0d576b016d28a93f0d18f955f (patch)
treed57243bffe1d1e4dce98db5eb7ea29a76c7124da
parent203d02c3670083a95733afc1a9d7a870d1ae1c34 (diff)
downloadbundler-2a62902a202c3fc0d576b016d28a93f0d18f955f.tar.gz
Fix config location edge caseapp_config_path_absolute
If `BUNDLE_APP_CONFIG` is set to an absolute path, and there's no Gemfile up in the directory hierarchy, bundler would end up using the default config location instead of the customized one. This commit fixes that.
-rw-r--r--lib/bundler.rb8
-rw-r--r--spec/commands/config_spec.rb12
2 files changed, 18 insertions, 2 deletions
diff --git a/lib/bundler.rb b/lib/bundler.rb
index df345539c8..f081d4d63f 100644
--- a/lib/bundler.rb
+++ b/lib/bundler.rb
@@ -285,7 +285,13 @@ module Bundler
def app_config_path
if app_config = ENV["BUNDLE_APP_CONFIG"]
- Pathname.new(app_config).expand_path(root)
+ app_config_pathname = Pathname.new(app_config)
+
+ if app_config_pathname.absolute?
+ app_config_pathname
+ else
+ app_config_pathname.expand_path(root)
+ end
else
root.join(".bundle")
end
diff --git a/spec/commands/config_spec.rb b/spec/commands/config_spec.rb
index 7a45dd0dd7..3a6b72d988 100644
--- a/spec/commands/config_spec.rb
+++ b/spec/commands/config_spec.rb
@@ -35,7 +35,7 @@ RSpec.describe ".bundle/config" do
end
end
- describe "location" do
+ describe "location with a gemfile" do
before :each do
gemfile <<-G
source "#{file_uri_for(gem_repo1)}"
@@ -64,6 +64,16 @@ RSpec.describe ".bundle/config" do
end
end
+ describe "location without a gemfile" do
+ it "works with an absolute path" do
+ ENV["BUNDLE_APP_CONFIG"] = tmp("foo/bar").to_s
+ bundle "config set --local path vendor/bundle"
+
+ expect(bundled_app(".bundle")).not_to exist
+ expect(tmp("foo/bar/config")).to exist
+ end
+ end
+
describe "global" do
before(:each) do
install_gemfile <<-G