diff --git a/lib/rubygems/user_interaction.rb b/lib/rubygems/user_interaction.rb index 1cee1555a0ac7f..0172c4ee897a40 100644 --- a/lib/rubygems/user_interaction.rb +++ b/lib/rubygems/user_interaction.rb @@ -193,7 +193,7 @@ class Gem::StreamUI # then special operations (like asking for passwords) will use the TTY # commands to disable character echo. - def initialize(in_stream, out_stream, err_stream=STDERR, usetty=true) + def initialize(in_stream, out_stream, err_stream=$stderr, usetty=true) @ins = in_stream @outs = out_stream @errs = err_stream @@ -591,8 +591,8 @@ def locked_puts(message) end ## -# Subclass of StreamUI that instantiates the user interaction using STDIN, -# STDOUT, and STDERR. +# Subclass of StreamUI that instantiates the user interaction using $stdin, +# $stdout, and $stderr. class Gem::ConsoleUI < Gem::StreamUI ## @@ -600,7 +600,7 @@ class Gem::ConsoleUI < Gem::StreamUI # stdin, output to stdout and warnings or errors to stderr. def initialize - super STDIN, STDOUT, STDERR, true + super $stdin, $stdout, $stderr, true end end diff --git a/test/rubygems/test_gem_console_ui.rb b/test/rubygems/test_gem_console_ui.rb new file mode 100644 index 00000000000000..b8a619625fe099 --- /dev/null +++ b/test/rubygems/test_gem_console_ui.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require_relative "helper" +require "rubygems/user_interaction" + +class TestGemConsoleUI < Gem::TestCase + def test_output_can_be_captured_by_test_unit + output = capture_output do + ui = Gem::ConsoleUI.new + + ui.alert_error "test error" + ui.alert_warning "test warning" + ui.alert "test alert" + end + + assert_equal "INFO: test alert\n", output.first + assert_equal "ERROR: test error\n" + "WARNING: test warning\n", output.last + end +end