summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2019-05-24 20:28:25 +0200
committerDavid Rodríguez <deivid.rodriguez@riseup.net>2019-05-24 20:28:25 +0200
commit786b5d9894f21e6e0e7355a64a6aa47121359bf3 (patch)
treeb2121b7d5a7444f9a6f13c3d6b6352de2c7f7c9c
parent4f62611c87533b3cb9cfc7133bbf775c65474e3f (diff)
downloadbundler-786b5d9894f21e6e0e7355a64a6aa47121359bf3.tar.gz
Respect color option when instantiating shells
Thor's base shell will be memoized the first time it is set. So if we instantiate a no-color shell first, further instantiations of a bundler shell will be initialized with a no-color shell by default. This is caused some sources specs to fail, depending on the order they run. See for example https://travis-ci.org/bundler/bundler/builds/500328994. What we do to fix it is to reset the shell unless no-color is explicitly specified. That way, further instantiations will rerun thor's internal logic to choose the default shell.
-rw-r--r--lib/bundler/ui/shell.rb4
-rw-r--r--spec/bundler/source_spec.rb12
2 files changed, 1 insertions, 15 deletions
diff --git a/lib/bundler/ui/shell.rb b/lib/bundler/ui/shell.rb
index 35da1edfc7..92476be7d2 100644
--- a/lib/bundler/ui/shell.rb
+++ b/lib/bundler/ui/shell.rb
@@ -10,9 +10,7 @@ module Bundler
attr_writer :shell
def initialize(options = {})
- if options["no-color"]
- Thor::Base.shell = Thor::Shell::Basic
- end
+ Thor::Base.shell = options["no-color"] ? Thor::Shell::Basic : nil
@shell = Thor::Base.shell.new
@level = ENV["DEBUG"] ? "debug" : "info"
@warning_history = []
diff --git a/spec/bundler/source_spec.rb b/spec/bundler/source_spec.rb
index d70fd7e549..9ef8e7e50f 100644
--- a/spec/bundler/source_spec.rb
+++ b/spec/bundler/source_spec.rb
@@ -60,10 +60,6 @@ RSpec.describe Bundler::Source do
before { Bundler.ui = Bundler::UI::Shell.new }
it "should return a string with the spec name and version and locked spec version" do
- if Bundler.ui.instance_variable_get(:@shell).is_a?(Bundler::Thor::Shell::Basic)
- skip "tty color is not supported with Thor::Shell::Basic environment."
- end
-
expect(subject.version_message(spec)).to eq("nokogiri >= 1.6\e[32m (was < 1.5)\e[0m")
end
end
@@ -83,10 +79,6 @@ RSpec.describe Bundler::Source do
before { Bundler.ui = Bundler::UI::Shell.new }
it "should return a string with the locked spec version in yellow" do
- if Bundler.ui.instance_variable_get(:@shell).is_a?(Bundler::Thor::Shell::Basic)
- skip "tty color is not supported with Thor::Shell::Basic environment."
- end
-
expect(subject.version_message(spec)).to eq("nokogiri 1.6.1\e[33m (was 1.7.0)\e[0m")
end
end
@@ -100,10 +92,6 @@ RSpec.describe Bundler::Source do
before { Bundler.ui = Bundler::UI::Shell.new }
it "should return a string with the locked spec version in green" do
- if Bundler.ui.instance_variable_get(:@shell).is_a?(Bundler::Thor::Shell::Basic)
- skip "tty color is not supported with Thor::Shell::Basic environment."
- end
-
expect(subject.version_message(spec)).to eq("nokogiri 1.7.1\e[32m (was 1.7.0)\e[0m")
end
end