summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-10-17 07:41:03 +0000
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-10-17 07:41:03 +0000
commit16b6fe17a3de009085ed61947cbc0a54644f6e95 (patch)
tree4be3326c9bae20603fc2759fb70a18834c7d0564 /lib
parent6b4cd8a996a800bddc6323cd9be7e402b4a3c56a (diff)
Suppress leak of file descriptors
`Bundler.ui=` in `Gem::TestCase#setup` creates `Bundler::UI::RGProxy` which inherites `::Gem::SilentUI` whose `initialize` opens `/dev/null`, and assigns it to `Gem::DefaultUserInteraction.ui`. After that, `Gem::TestCase#setup` forces to overwrite `Gem::DefaultUserInteraction.ui` with a mock. Thus, the instance of `::Gem::SilentUI` is not closed, which leads to the leak. This commit keeps `Gem::DefaultUserInteraction.ui` and manually close it in `teardown`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60194 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/rubygems/test_case.rb3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/rubygems/test_case.rb b/lib/rubygems/test_case.rb
index efc78edea2..82afb8a068 100644
--- a/lib/rubygems/test_case.rb
+++ b/lib/rubygems/test_case.rb
@@ -236,6 +236,7 @@ class Gem::TestCase < MiniTest::Unit::TestCase
@fetcher = nil
Bundler.ui = Bundler::UI::Silent.new
+ @back_ui = Gem::DefaultUserInteraction.ui
@ui = Gem::MockGemUi.new
# This needs to be a new instance since we call use_ui(@ui) when we want to
# capture output
@@ -420,6 +421,8 @@ class Gem::TestCase < MiniTest::Unit::TestCase
Gem::Specification._clear_load_cache
Gem::Specification.unresolved_deps.clear
Gem::refresh
+
+ @back_ui.close
end
def common_installer_setup