diff options
Diffstat (limited to 'test/ruby/test_require.rb')
-rw-r--r-- | test/ruby/test_require.rb | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/test/ruby/test_require.rb b/test/ruby/test_require.rb index 510da8e272..5d46c9a1a8 100644 --- a/test/ruby/test_require.rb +++ b/test/ruby/test_require.rb @@ -2,6 +2,7 @@ require 'test/unit' require 'tempfile' require_relative 'envutil' +require 'tmpdir' class TestRequire < Test::Unit::TestCase def test_require_invalid_shared_object @@ -246,7 +247,6 @@ class TestRequire < Test::Unit::TestCase end def test_relative - require 'tmpdir' load_path = $:.dup $:.delete(".") Dir.mktmpdir do |tmp| @@ -268,4 +268,19 @@ class TestRequire < Test::Unit::TestCase ensure $:.replace(load_path) if load_path end + + def test_relative_symlink + Dir.mktmpdir {|tmp| + Dir.chdir(tmp) { + Dir.mkdir "a" + Dir.mkdir "b" + File.open("a/lib.rb", "w") {|f| f.puts 'puts "a/lib.rb"' } + File.open("b/lib.rb", "w") {|f| f.puts 'puts "b/lib.rb"' } + File.open("a/tst.rb", "w") {|f| f.puts 'require_relative "lib"' } + File.symlink("../a/tst.rb", "b/tst.rb") + result = IO.popen([EnvUtil.rubybin, "b/tst.rb"]).read + assert_equal("a/lib.rb\n", result) + } + } + end end |