install_renamed: handle recursive installs.

Closes Homebrew/homebrew#49845.

Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
This commit is contained in:
Mike McQuaid 2016-03-07 15:11:00 +00:00 committed by Xu Cheng
parent 6f9f3faef3
commit 0578ba0f42
3 changed files with 13 additions and 1 deletions

View File

@ -82,6 +82,7 @@ class Pathname
src = Pathname(src)
dst = join(new_basename)
dst = yield(src, dst) if block_given?
return unless dst
mkpath

View File

@ -2,7 +2,8 @@ module InstallRenamed
def install_p(_, new_basename)
super do |src, dst|
if src.directory?
dst
dst.install(src.children)
next
else
append_default_if_different(src, dst)
end

View File

@ -137,6 +137,16 @@ class PathnameTests < Homebrew::TestCase
assert_equal "a", File.read(@dst+@src.basename+@file.basename)
end
def test_install_renamed_directory_recursive
@dst.extend(InstallRenamed)
(@dst+@dir.basename).mkpath
(@dst+@dir.basename+"another_file").write "a"
@dir.mkpath
(@dir+"another_file").write "b"
@dst.install @dir
assert_equal "b", File.read(@dst+@dir.basename+"another_file.default")
end
def test_cp_path_sub_file
@file.write "a"
@file.cp_path_sub @src, @dst