summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBundlerbot <bot@bundler.io>2020-01-19 12:15:32 +0000
committerBundlerbot <bot@bundler.io>2020-01-19 12:15:32 +0000
commit94288385498a69e679b576affae393578131e2a3 (patch)
treefc1e09655f76ebc8dd8635762cdfec52f7274665
parent482e752e515c701b371d706ed7a1db0ee48f26a0 (diff)
parent51007446a75b27dc4e9ceff28f0a258e101696f2 (diff)
downloadbundler-94288385498a69e679b576affae393578131e2a3.tar.gz
Merge #7589
7589: Add support for BUNDLER_ prefixed debug environment variables r=colby-swandale a=kou DEBUG_RESOLVER is used in RubyGems too. So we can't enable it only for Bundler. ### What was the end-user problem that led to this PR? The problem was not the end-user problem. It's a developer problem. ### What was your diagnosis of the problem? My diagnosis was RubyGems also uses `DEBUG_RESOLVER` environment variable. So we can't use `DEBUG_RESOLVER` environment variable to enable debug mode only for Bundler. We can use `DEBUG_RESOLVER_TREE` instead of `DEBUG_RESOLVER` only for `Bundler::Resolver`. But we can't do it for `Bundler::GemVersionPromoter`. ### What is your fix for the problem, implemented in this PR? My fix adds `BUNDLER_` prefix to `DEBUG_RESOLVER` and `DEBUG_RESOLVER_TREE` like other environment variables for Bundler such as `BUNDLER_EDITOR` do. ### Why did you choose this fix out of the possible options? I chose this fix because adding prefix is a common way. Bundlerd Molinillo and Thor also use this way such as `MOLINILLO_DEBUG` and `THOR_SHELL`. Co-authored-by: Sutou Kouhei <kou@clear-code.com>
-rw-r--r--lib/bundler/gem_version_promoter.rb2
-rw-r--r--lib/bundler/resolver.rb7
-rw-r--r--spec/install/gems/resolving_spec.rb14
3 files changed, 21 insertions, 2 deletions
diff --git a/lib/bundler/gem_version_promoter.rb b/lib/bundler/gem_version_promoter.rb
index 311b0cbbf3..76912940ac 100644
--- a/lib/bundler/gem_version_promoter.rb
+++ b/lib/bundler/gem_version_promoter.rb
@@ -7,7 +7,7 @@ module Bundler
# available dependency versions as found in its index, before returning it to
# to the resolution engine to select the best version.
class GemVersionPromoter
- DEBUG = ENV["DEBUG_RESOLVER"]
+ DEBUG = ENV["BUNDLER_DEBUG_RESOLVER"] || ENV["DEBUG_RESOLVER"]
attr_reader :level, :locked_specs, :unlock_gems
diff --git a/lib/bundler/resolver.rb b/lib/bundler/resolver.rb
index 2374ed3e5a..8b029cc0dc 100644
--- a/lib/bundler/resolver.rb
+++ b/lib/bundler/resolver.rb
@@ -80,7 +80,12 @@ module Bundler
def debug?
return @debug_mode if defined?(@debug_mode)
- @debug_mode = ENV["DEBUG_RESOLVER"] || ENV["DEBUG_RESOLVER_TREE"] || false
+ @debug_mode =
+ ENV["BUNDLER_DEBUG_RESOLVER"] ||
+ ENV["BUNDLER_DEBUG_RESOLVER_TREE"] ||
+ ENV["DEBUG_RESOLVER"] ||
+ ENV["DEBUG_RESOLVER_TREE"] ||
+ false
end
def before_resolution
diff --git a/spec/install/gems/resolving_spec.rb b/spec/install/gems/resolving_spec.rb
index d0448ca30b..323b28fdb1 100644
--- a/spec/install/gems/resolving_spec.rb
+++ b/spec/install/gems/resolving_spec.rb
@@ -69,6 +69,20 @@ RSpec.describe "bundle install with install-time dependencies" do
expect(the_bundle).to include_gems "net_a 1.0", "net_b 1.0", "net_c 1.0", "net_d 1.0", "net_e 1.0"
end
+ context "with ENV['BUNDLER_DEBUG_RESOLVER'] set" do
+ it "produces debug output" do
+ gemfile <<-G
+ source "#{file_uri_for(gem_repo1)}"
+ gem "net_c"
+ gem "net_e"
+ G
+
+ bundle :install, :env => { "BUNDLER_DEBUG_RESOLVER" => "1" }
+
+ expect(err).to include("Creating possibility state for net_c")
+ end
+ end
+
context "with ENV['DEBUG_RESOLVER'] set" do
it "produces debug output" do
gemfile <<-G