aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike McQuaid2016-03-07 15:11:00 +0000
committerXu Cheng2016-03-08 13:47:29 +0800
commit0578ba0f429708773489fdd8f9647c2712c7025c (patch)
tree55e43ad3dab2eb9d20d05f4abc804d71b3a53260
parent6f9f3faef3d566641b3fa18e887819da7889018a (diff)
downloadbrew-0578ba0f429708773489fdd8f9647c2712c7025c.tar.bz2
install_renamed: handle recursive installs.
Closes Homebrew/homebrew#49845. Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
-rw-r--r--Library/Homebrew/extend/pathname.rb1
-rw-r--r--Library/Homebrew/install_renamed.rb3
-rw-r--r--Library/Homebrew/test/test_pathname.rb10
3 files changed, 13 insertions, 1 deletions
diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb
index 68115632d..2f3fbc32f 100644
--- a/Library/Homebrew/extend/pathname.rb
+++ b/Library/Homebrew/extend/pathname.rb
@@ -82,6 +82,7 @@ class Pathname
src = Pathname(src)
dst = join(new_basename)
dst = yield(src, dst) if block_given?
+ return unless dst
mkpath
diff --git a/Library/Homebrew/install_renamed.rb b/Library/Homebrew/install_renamed.rb
index d84e8b28a..5e200244f 100644
--- a/Library/Homebrew/install_renamed.rb
+++ b/Library/Homebrew/install_renamed.rb
@@ -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
diff --git a/Library/Homebrew/test/test_pathname.rb b/Library/Homebrew/test/test_pathname.rb
index d29a2bc1e..3dba4e64a 100644
--- a/Library/Homebrew/test/test_pathname.rb
+++ b/Library/Homebrew/test/test_pathname.rb
@@ -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