summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2019-08-06 17:23:06 +0200
committerDavid Rodríguez <deivid.rodriguez@riseup.net>2019-08-11 12:29:07 +0200
commit220c54b7faf056f29b2403bd27b4f8caa53f9aa5 (patch)
tree845871e4daa2a0d0971642506b3569c759014caa
parent421ceeca55871e8887f3290325078b5946798aa5 (diff)
downloadbundler-fix_deprecation_warnings_during_specs.tar.gz
Stop printing deprecation messages during specsfix_deprecation_warnings_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.
-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 00ff541598..62a292fcee 100644
--- a/lib/bundler/shared_helpers.rb
+++ b/lib/bundler/shared_helpers.rb
@@ -134,8 +134,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!
@@ -212,6 +213,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