diff options
author | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-10-17 07:41:03 +0000 |
---|---|---|
committer | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-10-17 07:41:03 +0000 |
commit | 16b6fe17a3de009085ed61947cbc0a54644f6e95 (patch) | |
tree | 4be3326c9bae20603fc2759fb70a18834c7d0564 | |
parent | 6b4cd8a996a800bddc6323cd9be7e402b4a3c56a (diff) | |
download | ruby-16b6fe17a3de009085ed61947cbc0a54644f6e95.tar.gz |
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
-rw-r--r-- | lib/rubygems/test_case.rb | 3 |
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 |