Index: ChangeLog =================================================================== --- ChangeLog (revision 31122) +++ ChangeLog (working copy) @@ -1,3 +1,9 @@ +Fri Mar 18 06:22:27 2011 Oleg Shaldybin + + * lib/fileutils.rb (FileUtils::Entry_#copy_file): updated FileUtils.cp + to still copy file permissions when :preserve is false (as cp does + this even when -p isn't set). + Fri Mar 18 00:59:38 2011 Nobuyoshi Nakada * ext/win32ole/extconf.rb (create_docfile): removed. should not Index: lib/fileutils.rb =================================================================== --- lib/fileutils.rb (revision 31122) +++ lib/fileutils.rb (working copy) @@ -1275,8 +1275,9 @@ end def copy_file(dest) + st = stat() File.open(path()) do |s| - File.open(dest, 'wb') do |f| + File.open(dest, 'wb', st.mode) do |f| IO.copy_stream(s, f) end end Index: test/fileutils/test_fileutils.rb =================================================================== --- test/fileutils/test_fileutils.rb (revision 31122) +++ test/fileutils/test_fileutils.rb (working copy) @@ -230,6 +230,13 @@ } end + def test_cp_preserve_permissions + touch 'tmp/cptmp' + chmod 0755, 'tmp/cptmp' + cp 'tmp/cptmp', 'tmp/cptmp2' + assert_equal File.stat('tmp/cptmp').mode, File.stat('tmp/cptmp2').mode + end + def test_cp_symlink touch 'tmp/cptmp' # src==dest (2) symlink and its target