Skip to content

Commit

Permalink
Revert "[rubygems/rubygems] Fix require issue with file extension pri…
Browse files Browse the repository at this point in the history
…ority"

This reverts commit d767da4.

  It fails with spec/ruby/core/kernel/require_spec.rb:5
  • Loading branch information
hsbt committed Feb 6, 2020
1 parent bd0a02d commit 8c67080
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 74 deletions.
28 changes: 16 additions & 12 deletions lib/rubygems/core_ext/kernel_require.rb
Expand Up @@ -43,18 +43,18 @@ def require(path)
# 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
Expand All @@ -67,8 +67,12 @@ def require(path)
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)
Expand Down
62 changes: 0 additions & 62 deletions test/rubygems/test_require.rb
Expand Up @@ -120,24 +120,6 @@ def test_dash_i_beats_default_gems
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)
Expand Down Expand Up @@ -559,48 +541,4 @@ def silence_warnings
$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

0 comments on commit 8c67080

Please sign in to comment.