From 5a8e87cb2ef7e4d6c0bdc86a4af207ecbb56a1e7 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sat, 19 Jul 2025 23:04:54 +0900 Subject: [PATCH] [ruby/fileutils] Just the parent path of the destination symlink should exist https://github.com/ruby/fileutils/commit/71225b1b46 --- lib/fileutils.rb | 2 +- test/fileutils/test_fileutils.rb | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) 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?