From f8f5e7fadf689a11a8ee28b7af4e7777e2dec1ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Wed, 25 Mar 2020 15:55:16 +0100 Subject: [rubygems/rubygems] Respect files loaded from default gems before rubygems https://github.com/rubygems/rubygems/commit/f3da3c1190 --- lib/rubygems.rb | 14 ++++++++++++++ lib/rubygems/test_case.rb | 1 + 2 files changed, 15 insertions(+) (limited to 'lib') diff --git a/lib/rubygems.rb b/lib/rubygems.rb index b03d747917..ca80326459 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -1226,6 +1226,8 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} next unless $~ end + spec.activate if already_loaded?(file) + @path_to_default_spec_map[file] = spec @path_to_default_spec_map[file.sub(suffix_regexp, "")] = spec end @@ -1291,6 +1293,18 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} attr_reader :pre_uninstall_hooks + private + + def already_loaded?(file) + default_gem_load_paths.find do |load_path_entry| + $LOADED_FEATURES.include?("#{load_path_entry}/#{file}") + end + end + + def default_gem_load_paths + @default_gem_load_paths ||= $LOAD_PATH[load_path_insert_index..-1] + end + end ## diff --git a/lib/rubygems/test_case.rb b/lib/rubygems/test_case.rb index 9b83f03d31..fef9540264 100644 --- a/lib/rubygems/test_case.rb +++ b/lib/rubygems/test_case.rb @@ -803,6 +803,7 @@ class Gem::TestCase < Minitest::Test lib_dir = File.join(@tempdir, "default_gems", "lib") lib_dir.instance_variable_set(:@gem_prelude_index, lib_dir) + Gem.instance_variable_set(:@default_gem_load_paths, [*Gem.instance_variable_get(:@default_gem_load_paths), lib_dir]) $LOAD_PATH.unshift(lib_dir) files.each do |file| rb_path = File.join(lib_dir, file) -- cgit v1.2.3