diff --git a/lib/fileutils.rb b/lib/fileutils.rb index 05d0dc83a7..775b277a72 100644 --- a/lib/fileutils.rb +++ b/lib/fileutils.rb @@ -739,7 +739,7 @@ module FileUtils real_ddirs = fu_split_path(File.realpath(parent)) else destdirs ||= fu_split_path(dest) - real_ddirs ||= fu_split_path(File.realpath(dest)) + real_ddirs ||= fu_split_path(File.realdirpath(dest)) end srcdirs = fu_split_path(s) i = fu_common_components(srcdirs, destdirs) diff --git a/test/fileutils/test_fileutils.rb b/test/fileutils/test_fileutils.rb index 4ccea53e95..92308d9557 100644 --- a/test/fileutils/test_fileutils.rb +++ b/test/fileutils/test_fileutils.rb @@ -1080,7 +1080,11 @@ class TestFileUtils < Test::Unit::TestCase assert_raise(Errno::EEXIST, Errno::EACCES) { ln_sr fname, 'tmp', target_directory: false } - assert_file.not_exist? File.join('tmp/', File.basename(fname)) + dest = File.join('tmp/', File.basename(fname)) + assert_file.not_exist? dest + ln_sr fname, dest, target_directory: false + assert_file.symlink?(dest) + assert_equal("../#{fname}", File.readlink(dest)) end end if have_symlink?