summaryrefslogtreecommitdiff
path: root/lib/bundler/shared_helpers.rb
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2019-08-06 17:23:06 +0200
committerSHIBATA Hiroshi <hsbt@ruby-lang.org>2019-08-16 14:30:23 +0900
commitcd15d27d10d4f041cf4e60064dae96562c9bd83f (patch)
tree96692bc5098dd6ad02bdcedd8cb83de928898df5 /lib/bundler/shared_helpers.rb
parent4af3665fd91aae87c9fe014778ed7c54245e2f9b (diff)
[bundler/bundler] Stop printing deprecation messages during specs
Previously under some circunstances (met during some specs), bundler would print deprecations to a separate UI different from "bundler's UI". This UI would not be captured by the specs, and thus would be printed to screen during the specs. This commit fixes that by making sure all deprecation messages always go through bundler's UI. https://github.com/bundler/bundler/commit/220c54b7fa
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/2366
Diffstat (limited to 'lib/bundler/shared_helpers.rb')
-rw-r--r--lib/bundler/shared_helpers.rb20
1 files changed, 18 insertions, 2 deletions
diff --git a/lib/bundler/shared_helpers.rb b/lib/bundler/shared_helpers.rb
index b7e2af29c4..af1836009f 100644
--- a/lib/bundler/shared_helpers.rb
+++ b/lib/bundler/shared_helpers.rb
@@ -133,8 +133,9 @@ module Bundler
return unless bundler_major_version >= major_version && prints_major_deprecations?
@major_deprecation_ui ||= Bundler::UI::Shell.new("no-color" => true)
- ui = Bundler.ui.is_a?(@major_deprecation_ui.class) ? Bundler.ui : @major_deprecation_ui
- ui.warn("[DEPRECATED] #{message}")
+ with_major_deprecation_ui do |ui|
+ ui.warn("[DEPRECATED] #{message}")
+ end
end
def print_major_deprecations!
@@ -211,6 +212,21 @@ module Bundler
private
+ def with_major_deprecation_ui(&block)
+ ui = Bundler.ui
+
+ if ui.is_a?(@major_deprecation_ui.class)
+ yield ui
+ else
+ begin
+ Bundler.ui = @major_deprecation_ui
+ yield Bundler.ui
+ ensure
+ Bundler.ui = ui
+ end
+ end
+ end
+
def validate_bundle_path
path_separator = Bundler.rubygems.path_separator
return unless Bundler.bundle_path.to_s.split(path_separator).size > 1