Merge pull request #6141 from chrmoritz/unpackDir

fix copying top level symlinks to folders in directory unpack_strategy
This commit is contained in:
Mike McQuaid 2019-05-17 09:01:01 +01:00 committed by GitHub
commit e098c37dc3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 1 deletions

View File

@ -9,6 +9,8 @@ describe UnpackStrategy::Directory do
mktmpdir.tap do |path|
FileUtils.touch path/"file"
FileUtils.ln_s "file", path/"symlink"
FileUtils.mkdir path/"folder"
FileUtils.ln_s "folder", path/"folderSymlink"
end
}
@ -19,6 +21,11 @@ describe UnpackStrategy::Directory do
expect(unpack_dir/"symlink").to be_a_symlink
end
it "does not follow top level symlinks to directories" do
strategy.extract(to: unpack_dir)
expect(unpack_dir/"folderSymlink").to be_a_symlink
end
it "preserves permissions of contained files" do
FileUtils.chmod 0644, path/"file"

View File

@ -19,7 +19,8 @@ module UnpackStrategy
def extract_to_dir(unpack_dir, basename:, verbose:)
path.children.each do |child|
system_command! "cp",
args: ["-pR", child.directory? ? "#{child}/." : child, unpack_dir/child.basename],
args: ["-pR", (child.directory? && !child.symlink?) ? "#{child}/." : child,
unpack_dir/child.basename],
verbose: verbose
end
end