summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-06-10 07:20:59 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-06-10 07:20:59 +0000
commit9e7993794f54d1f5ed17f87adf65e86df69647ae (patch)
tree65d6cb92322a9efc16e7d56668c19cc81a22b6e7
parentbcd3f7863757d75a7bd232e442fed038e0fdcff5 (diff)
* lib/rubygems/core_ext/kernel_require.rb: -I should always win over
gems. [ruby-core:74814] [Backport #12248] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@55357 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rwxr-xr-xlib/rubygems/core_ext/kernel_require.rb2
-rw-r--r--test/rubygems/test_require.rb30
-rw-r--r--version.h2
4 files changed, 37 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 2d4e6e4051..afd499eb88 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri Jun 10 16:19:14 2016 Aaron Patterson <aaron.patterson@gmail.com>
+
+ * lib/rubygems/core_ext/kernel_require.rb: -I should always win over
+ gems. [ruby-core:74814] [Backport #12248]
+
Fri Jun 10 16:12:58 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* variable.c (rb_local_constants_i): exclude hidden constants.
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index 8f2cddee4d..bf9618d3bf 100755
--- a/lib/rubygems/core_ext/kernel_require.rb
+++ b/lib/rubygems/core_ext/kernel_require.rb
@@ -66,7 +66,7 @@ module Kernel
begin
RUBYGEMS_ACTIVATION_MONITOR.exit
- return gem_original_require(spec.to_fullpath(path) || path)
+ return gem_original_require(path)
end if spec
# Attempt to find +path+ in any unresolved gems...
diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb
index dec5285d21..8aa9aac38c 100644
--- a/test/rubygems/test_require.rb
+++ b/test/rubygems/test_require.rb
@@ -49,6 +49,36 @@ class TestGemRequire < Gem::TestCase
end
end
+ # Providing -I on the commandline should always beat gems
+ def test_dash_i_beats_gems
+ a1 = new_spec "a", "1", {"b" => "= 1"}, "lib/test_gem_require_a.rb"
+ b1 = new_spec "b", "1", {"c" => "> 0"}, "lib/b/c.rb"
+ c1 = new_spec "c", "1", nil, "lib/c/c.rb"
+ c2 = new_spec "c", "2", nil, "lib/c/c.rb"
+
+ install_specs c1, c2, b1, a1
+
+ dir = Dir.mktmpdir
+ dash_i_arg = File.join Dir.mktmpdir, 'lib'
+
+ c_rb = File.join dash_i_arg, 'b', 'c.rb'
+
+ FileUtils.mkdir_p File.dirname c_rb
+ File.open(c_rb, 'w') { |f| f.write "class Object; HELLO = 'world' end" }
+
+ lp = $LOAD_PATH.dup
+
+ # Pretend to provide a commandline argument that overrides a file in gem b
+ $LOAD_PATH.unshift dash_i_arg
+
+ assert_require 'test_gem_require_a'
+ assert_require 'b/c' # this should be required from -I
+ assert_equal "world", ::Object::HELLO
+ ensure
+ $LOAD_PATH.replace lp
+ Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
+ end
+
def test_concurrent_require
Object.const_set :FILE_ENTERED_LATCH, Latch.new(2)
Object.const_set :FILE_EXIT_LATCH, Latch.new(1)
diff --git a/version.h b/version.h
index 113cd38f25..c04d5a9915 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
#define RUBY_VERSION "2.2.6"
#define RUBY_RELEASE_DATE "2016-06-10"
-#define RUBY_PATCHLEVEL 332
+#define RUBY_PATCHLEVEL 333
#define RUBY_RELEASE_YEAR 2016
#define RUBY_RELEASE_MONTH 6