diff options
| author | Mike McQuaid | 2016-03-07 15:11:00 +0000 |
|---|---|---|
| committer | Xu Cheng | 2016-03-08 13:47:29 +0800 |
| commit | 0578ba0f429708773489fdd8f9647c2712c7025c (patch) | |
| tree | 55e43ad3dab2eb9d20d05f4abc804d71b3a53260 | |
| parent | 6f9f3faef3d566641b3fa18e887819da7889018a (diff) | |
| download | brew-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.rb | 1 | ||||
| -rw-r--r-- | Library/Homebrew/install_renamed.rb | 3 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_pathname.rb | 10 |
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 |
