aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rubygems/test_case.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/test_case.rb')
-rw-r--r--lib/rubygems/test_case.rb13
1 files changed, 12 insertions, 1 deletions
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