Blob Blame History Raw
From c5197b2ab35ba389f48918e0c773b43b6dca2fa5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
Date: Fri, 7 Feb 2020 17:16:05 +0100
Subject: [PATCH 1/3] Tweaks to get test passing more reliably

---
 test/rubygems/test_require.rb | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb
index 7cffbfa7fe..67c55416d4 100644
--- a/test/rubygems/test_require.rb
+++ b/test/rubygems/test_require.rb
@@ -567,18 +567,20 @@ def util_install_extension_file(name)
     write_file File.join(@tempdir, "extconf.rb") do |io|
       io.write <<-RUBY
         require "mkmf"
+        CONFIG['LDSHARED'] = '$(TOUCH) $@ ||'
         create_makefile("#{name}")
       RUBY
     end
 
     write_file File.join(@tempdir, "#{name}.c") do |io|
       io.write <<-C
-        #include <ruby.h>
         void Init_#{name}() { }
       C
     end
 
-    spec.files += ["extconf.rb", "#{name}.c"]
+    write_file File.join(@tempdir, "depend")
+
+    spec.files += ["extconf.rb", "depend", "#{name}.c"]
 
     so = File.join(spec.gem_dir, "#{name}.#{RbConfig::CONFIG["DLEXT"]}")
     refute_path_exists so

From 7bfd7319cd751837c3ccaf1d97b02846eaaf39d5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
Date: Tue, 11 Feb 2020 11:56:06 +0100
Subject: [PATCH 2/3] Fix bug bug calculating $LOAD_PATH's to check in
 `require`

In `Gem.load_path_insert_index` is not set, we end up having
`$LOAD_PATH[0...-1]`, unintentionally skipping the last $LOAD_PATH entry
from the check.

The correct thing to do in that case is to not even try since we have no
way of distinguisng default LOAD_PATH entries from those added with -I.
---
 lib/rubygems/core_ext/kernel_require.rb | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index 369f2c743e..a8d170f13a 100644
--- a/lib/rubygems/core_ext/kernel_require.rb
+++ b/lib/rubygems/core_ext/kernel_require.rb
@@ -44,7 +44,10 @@ def require(path)
     resolved_path = begin
       rp = nil
       Gem.suffixes.each do |s|
-        $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp|
+        load_path_insert_index = Gem.load_path_insert_index
+        break unless load_path_insert_index
+
+        $LOAD_PATH[0...load_path_insert_index].each do |lp|
           safe_lp = lp.dup.tap(&Gem::UNTAINT)
           begin
             if File.symlink? safe_lp # for backward compatibility

From 4fc0ab21c0f7713829abb522ce3b6d8e24c126b3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
Date: Fri, 14 Feb 2020 02:03:04 +0100
Subject: [PATCH 3/3] Exclude empty suffix from `-I` require loop

---
 lib/rubygems/core_ext/kernel_require.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index a8d170f13a..9712fb6ac0 100644
--- a/lib/rubygems/core_ext/kernel_require.rb
+++ b/lib/rubygems/core_ext/kernel_require.rb
@@ -43,7 +43,7 @@ def require(path)
     # https://github.com/rubygems/rubygems/pull/1868
     resolved_path = begin
       rp = nil
-      Gem.suffixes.each do |s|
+      Gem.suffixes[1..-1].each do |s|
         load_path_insert_index = Gem.load_path_insert_index
         break unless load_path_insert_index