summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2020-02-06 22:07:39 +0900
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2020-02-06 22:07:39 +0900
commit8c67080381166f97a1153f092f40df699d020a53 (patch)
tree1d3cbd3237dda2d3cd29527c630bb40ddc522f6a
parentbd0a02d1433b6d9a9dcde38eb9fb2dbc3b1071e9 (diff)
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
-rw-r--r--lib/rubygems/core_ext/kernel_require.rb28
-rw-r--r--test/rubygems/test_require.rb62
2 files changed, 16 insertions, 74 deletions
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index 369f2c743e..60f4d18712 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/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
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 b674ff5f6d..49fe7f96c6 100644
--- a/test/rubygems/test_require.rb
+++ b/test/rubygems/test_require.rb
@@ -120,24 +120,6 @@ class TestGemRequire < Gem::TestCase
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
$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