[rubygems/rubygems] Use globals variables for standard input/output
Replace use of `STDIN`, `STDOUT` and `STDERR` constants by their `$stdin`, `$stdout` and `$stderr` global variable equivalents. This enables easier testing via standard means, such as `assert_output` for minitest or `expect { print 'foo' }.to output.to_stdout` for RSpec test suites. https://github.com/rubygems/rubygems/commit/a0a6fc1b76
This commit is contained in:
parent
d89280e8bf
commit
aabf2ce181
@ -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 @@ class Gem::StreamUI
|
||||
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
|
||||
|
||||
|
19
test/rubygems/test_gem_console_ui.rb
Normal file
19
test/rubygems/test_gem_console_ui.rb
Normal file
@ -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
|
Loading…
x
Reference in New Issue
Block a user