aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--lib/rubygems/test_case.rb13
2 files changed, 19 insertions, 1 deletions
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 <nobu@ruby-lang.org>
+
+ * 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 <e@80x24.org>
* 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