diff --git a/lib/fileutils.rb b/lib/fileutils.rb index e04865a..fdee182 100644 --- a/lib/fileutils.rb +++ b/lib/fileutils.rb @@ -739,7 +739,7 @@ def ln_sr(src, dest, target_directory: true, force: nil, noop: nil, verbose: nil 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 4ccea53..92308d9 100644 --- a/test/fileutils/test_fileutils.rb +++ b/test/fileutils/test_fileutils.rb @@ -1080,7 +1080,11 @@ def test_ln_sr_not_target_directory 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?