From 5c19a5fa247f173eb7d41048f3e1a4beb4e4e0c4 Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 4 Jul 2015 01:43:01 +0000 Subject: [PATCH] test_case.rb: fix multiple load * lib/rubygems/test_case.rb (teardown): do not delete features loaded from the original load paths, the same libraries should be loaded again when the same features are required. [ruby-dev:49031] [Bug #11222] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51138 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ lib/rubygems/test_case.rb | 13 ++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index dc5d27b846..7b8e54bc43 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Sat Jul 4 10:42:57 2015 Nobuyoshi Nakada + + * lib/rubygems/test_case.rb (teardown): do not delete features + loaded from the original load paths, the same libraries should + be loaded again when the same features are required. + [ruby-dev:49031] [Bug #11222] + Sat Jul 4 09:38:52 2015 Eric Wong * vm.c (rb_vm_mark): reduce branches for always-set VM fields diff --git a/lib/rubygems/test_case.rb b/lib/rubygems/test_case.rb index 9edb6b48bd..9d46be7091 100644 --- a/lib/rubygems/test_case.rb +++ b/lib/rubygems/test_case.rb @@ -342,7 +342,18 @@ class Gem::TestCase < MiniTest::Unit::TestCase def teardown $LOAD_PATH.replace @orig_LOAD_PATH if @orig_LOAD_PATH - $LOADED_FEATURES.replace @orig_LOADED_FEATURES if @orig_LOADED_FEATURES + if @orig_LOADED_FEATURES + if @orig_LOAD_PATH + paths = @orig_LOAD_PATH.map {|path| File.join(File.expand_path(path), "/")} + ($LOADED_FEATURES - @orig_LOADED_FEATURES).each do |feat| + unless paths.any? {|path| feat.start_with?(path)} + $LOADED_FEATURES.delete(feat) + end + end + else + $LOADED_FEATURES.replace @orig_LOADED_FEATURES + end + end if @orig_BASERUBY RbConfig::CONFIG['BASERUBY'] = @orig_BASERUBY