diff --git a/lib/rubygems/user_interaction.rb b/lib/rubygems/user_interaction.rb index f5e460f994..f7788cedf2 100644 --- a/lib/rubygems/user_interaction.rb +++ b/lib/rubygems/user_interaction.rb @@ -378,9 +378,13 @@ class Gem::StreamUI # handlers that might have been defined. def terminate_interaction(status = 0) + close raise Gem::SystemExitException, status end + def close + end + ## # Return a progress reporter object chosen from the current verbosity. @@ -683,6 +687,12 @@ class Gem::SilentUI < Gem::StreamUI super reader, writer, writer, false end + def close + super + @ins.close + @outs.close + end + def download_reporter(*args) # :nodoc: SilentDownloadReporter.new(@outs, *args) end diff --git a/test/rubygems/test_gem_silent_ui.rb b/test/rubygems/test_gem_silent_ui.rb index 1e25c007c2..01ff79d828 100644 --- a/test/rubygems/test_gem_silent_ui.rb +++ b/test/rubygems/test_gem_silent_ui.rb @@ -9,6 +9,11 @@ class TestGemSilentUI < Gem::TestCase @sui = Gem::SilentUI.new end + def teardown + @sui.close + super + end + def test_ask value = nil out, err = capture_io do