From ab93e405a0da00285d4471e5e71e866595f8fa62 Mon Sep 17 00:00:00 2001 From: mame Date: Tue, 17 Oct 2017 07:41:03 +0000 Subject: 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 --- lib/rubygems/test_case.rb | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lib/rubygems') 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 -- cgit v1.2.3