[前][次][番号順一覧][スレッド一覧]

ruby-changes:59946

From: Hiroshi <ko1@a...>
Date: Thu, 6 Feb 2020 22:08:18 +0900 (JST)
Subject: [ruby-changes:59946] 8c67080381 (master): Revert "[rubygems/rubygems] Fix require issue with file extension priority"

https://git.ruby-lang.org/ruby.git/commit/?id=8c67080381

From 8c67080381166f97a1153f092f40df699d020a53 Mon Sep 17 00:00:00 2001
From: Hiroshi SHIBATA <hsbt@r...>
Date: Thu, 6 Feb 2020 22:07:39 +0900
Subject: Revert "[rubygems/rubygems] Fix require issue with file extension
 priority"

This reverts commit d767da428c28b7b9fec56b383bb32f6f76c6ad26.

  It fails with spec/ruby/core/kernel/require_spec.rb:5

diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index 369f2c7..60f4d18 100644
--- a/lib/rubygems/core_ext/kernel_require.rb
+++ b/lib/rubygems/core_ext/kernel_require.rb
@@ -43,18 +43,18 @@ module Kernel https://github.com/ruby/ruby/blob/trunk/lib/rubygems/core_ext/kernel_require.rb#L43
     # https://github.com/rubygems/rubygems/pull/1868
     resolved_path = begin
       rp = nil
-      Gem.suffixes.each do |s|
-        $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp|
-          safe_lp = lp.dup.tap(&Gem::UNTAINT)
-          begin
-            if File.symlink? safe_lp # for backward compatibility
-              next
-            end
-          rescue SecurityError
-            RUBYGEMS_ACTIVATION_MONITOR.exit
-            raise
+      $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp|
+        safe_lp = lp.dup.tap(&Gem::UNTAINT)
+        begin
+          if File.symlink? safe_lp # for backward compatibility
+            next
           end
+        rescue SecurityError
+          RUBYGEMS_ACTIVATION_MONITOR.exit
+          raise
+        end
 
+        Gem.suffixes.each do |s|
           full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}"))
           if File.file?(full_path)
             rp = full_path
@@ -67,8 +67,12 @@ module Kernel https://github.com/ruby/ruby/blob/trunk/lib/rubygems/core_ext/kernel_require.rb#L67
     end
 
     if resolved_path
-      RUBYGEMS_ACTIVATION_MONITOR.exit
-      return gem_original_require(resolved_path)
+      begin
+        RUBYGEMS_ACTIVATION_MONITOR.exit
+        return gem_original_require(resolved_path)
+      rescue LoadError
+        RUBYGEMS_ACTIVATION_MONITOR.enter
+      end
     end
 
     if spec = Gem.find_unresolved_default_spec(path)
diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb
index b674ff5..49fe7f9 100644
--- a/test/rubygems/test_require.rb
+++ b/test/rubygems/test_require.rb
@@ -120,24 +120,6 @@ class TestGemRequire < Gem::TestCase https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_require.rb#L120
     Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
   end
 
-  def test_dash_i_respects_default_library_extension_priority
-    skip "extensions don't quite work on jruby" if Gem.java_platform?
-
-    dash_i_ext_arg = util_install_extension_file('a')
-    dash_i_lib_arg = util_install_ruby_file('a')
-
-    lp = $LOAD_PATH.dup
-
-    begin
-      $LOAD_PATH.unshift dash_i_lib_arg
-      $LOAD_PATH.unshift dash_i_ext_arg
-      assert_require 'a'
-      assert_match(/a\.rb$/, $LOADED_FEATURES.last)
-    ensure
-      $LOAD_PATH.replace lp
-    end
-  end
-
   def test_concurrent_require
     Object.const_set :FILE_ENTERED_LATCH, Latch.new(2)
     Object.const_set :FILE_EXIT_LATCH, Latch.new(1)
@@ -559,48 +541,4 @@ class TestGemRequire < Gem::TestCase https://github.com/ruby/ruby/blob/trunk/test/rubygems/test_require.rb#L541
     $VERBOSE = old_verbose
   end
 
-  def util_install_extension_file(name)
-    spec = quick_gem name
-    util_build_gem spec
-
-    spec.extensions << "extconf.rb"
-    write_file File.join(@tempdir, "extconf.rb") do |io|
-      io.write <<-RUBY
-        require "mkmf"
-        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"]
-
-    so = File.join(spec.gem_dir, "#{name}.#{RbConfig::CONFIG["DLEXT"]}")
-    refute_path_exists so
-
-    path = Gem::Package.build spec
-    installer = Gem::Installer.at path
-    installer.install
-    assert_path_exists so
-
-    spec.gem_dir
-  end
-
-  def util_install_ruby_file(name)
-    dir_lib = Dir.mktmpdir("test_require_lib", @tempdir)
-    dash_i_lib_arg = File.join dir_lib
-
-    a_rb = File.join dash_i_lib_arg, "#{name}.rb"
-
-    FileUtils.mkdir_p File.dirname a_rb
-    File.open(a_rb, 'w') { |f| f.write "# #{name}.rb" }
-
-    dash_i_lib_arg
-  end
-
 end
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]