summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/rubygems/user_interaction.rb10
-rw-r--r--test/rubygems/test_gem_silent_ui.rb5
2 files changed, 15 insertions, 0 deletions
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