diff options
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | lib/fileutils.rb | 53 | ||||
-rw-r--r-- | test/fileutils/test_fileutils.rb | 19 |
3 files changed, 53 insertions, 30 deletions
@@ -1,3 +1,14 @@ +Fri Dec 12 19:33:06 2003 Minero Aoki <aamine@loveruby.net> + + * lib/fileutils.rb (mkdir): remove trailing `/' from pathes. + + * lib/fileutils.rb (rmdir): ditto. [ruby-dev:22238] + + * lib/fileutils.rb (rmdir_r): ditto. + + * lib/fileutils.rb (fu_copy_dir): check if it is a directory after + mkdir(2). + Fri Dec 12 06:06:09 2003 Nobuyoshi Nakada <nobu@ruby-lang.org> * eval.c (proc_invoke): fix class name in warning message for diff --git a/lib/fileutils.rb b/lib/fileutils.rb index deba1c8fd..d34e6fec4 100644 --- a/lib/fileutils.rb +++ b/lib/fileutils.rb @@ -143,7 +143,7 @@ module FileUtils mode = options[:mode] || (0777 & ~File.umask) list.each do |dir| - Dir.mkdir dir, mode + Dir.mkdir dir.sub(%r</\z>, ''), mode end end @@ -209,7 +209,7 @@ module FileUtils return if options[:noop] list.each do |dir| - Dir.rmdir dir + Dir.rmdir dir.sub(%r</\z>, '') end end @@ -357,8 +357,11 @@ module FileUtils def fu_copy_dir(src, dest, rel, preserve) #:nodoc: fu_preserve_attr(preserve, "#{src}/#{rel}", "#{dest}/#{rel}") {|s,d| - dir = File.expand_path(d) # to remove '/./' - Dir.mkdir dir unless File.directory?(dir) + begin + Dir.mkdir File.expand_path(d) + rescue => err + raise unless File.directory?(d) + end } Dir.entries("#{src}/#{rel}").each do |fname| if File.directory?(File.join(src,rel,fname)) @@ -585,7 +588,7 @@ module FileUtils end end begin - Dir.rmdir dir + Dir.rmdir dir.sub(%r</\z>, '') rescue Errno::ENOENT raise unless force end @@ -601,9 +604,10 @@ module FileUtils def compare_file(a, b) return false unless File.size(a) == File.size(b) File.open(a, 'rb') {|fa| - File.open(b, 'rb') {|fb| + File.open(b, 'rb') {|fb| return compare_stream(fa, fb) - } } + } + } end alias identical? compare_file @@ -644,11 +648,11 @@ module FileUtils fu_each_src_dest(src, dest) do |s,d| unless File.exist?(d) and compare_file(s,d) - remove_file d, true - st = File.stat(s) if options[:preserve] - copy_file s, d - File.utime st.atime, st.mtime, d if options[:preserve] - File.chmod options[:mode], d if options[:mode] + remove_file d, true + st = File.stat(s) if options[:preserve] + copy_file s, d + File.utime st.atime, st.mtime, d if options[:preserve] + File.chmod options[:mode], d if options[:mode] end end end @@ -694,7 +698,7 @@ module FileUtils File.utime(t, t, fname) rescue Errno::ENOENT File.open(fname, 'a') { - ; + ; } end end @@ -722,23 +726,16 @@ module FileUtils end def fu_each_src_dest0(src, dest) - unless src.is_a?(Array) - yield src.to_str, fu_dest_filename(src.to_str, dest.to_str) - else - dir = dest.to_str - #raise ArgumentError, "not a directory: #{dir}" unless File.directory?(dir) - dir += (dir[-1,1] == '/') ? '' : '/' - src.map {|s| s.to_str }.each do |fname| - yield fname, dir + File.basename(fname) + if src.is_a?(Array) + src.each do |s| + yield s.to_str, File.join(dest, File.basename(s)) end - end - end - - def fu_dest_filename(src, dest) - if File.directory?(dest) - (dest[-1,1] == '/' ? dest : dest + '/') + File.basename(src) else - dest + if File.directory?(dest) + yield src.to_str, File.join(dest, File.basename(src)) + else + yield src.to_str, dest.to_str + end end end diff --git a/test/fileutils/test_fileutils.rb b/test/fileutils/test_fileutils.rb index 6c4078049..03d4f1a1b 100644 --- a/test/fileutils/test_fileutils.rb +++ b/test/fileutils/test_fileutils.rb @@ -164,6 +164,9 @@ end cp fname, 'tmp' assert_same_file fname, 'tmp/' + File.basename(fname) + cp fname, 'tmp/' + assert_same_file fname, 'tmp/' + File.basename(fname) + cp fname, 'tmp/preserve', :preserve => true assert_same_file fname, 'tmp/preserve' a = File.stat(fname) @@ -221,10 +224,17 @@ end end def test_mv + mkdir 'tmp/dest' TARGETS.each do |fname| cp fname, 'tmp/mvsrc' mv 'tmp/mvsrc', 'tmp/mvdest' assert_same_file fname, 'tmp/mvdest' + + mv 'tmp/mvdest', 'tmp/dest/' + assert_same_file fname, 'tmp/dest/mvdest' + + mv 'tmp/dest/mvdest', 'tmp' + assert_same_file fname, 'tmp/mvdest' end # src==dest (1) same path @@ -474,6 +484,10 @@ end assert_directory 'tmpdatadir' Dir.rmdir 'tmpdatadir' + mkdir 'tmpdatadir/' + assert_directory 'tmpdatadir' + Dir.rmdir 'tmpdatadir' + mkdir 'tmp/mkdirdest' assert_directory 'tmp/mkdirdest' Dir.rmdir 'tmp/mkdirdest' @@ -485,7 +499,8 @@ end # pathname assert_nothing_raised { - mkdir 'tmp/tmpdirtmp' + mkdir Pathname.new('tmp/tmpdirtmp') + mkdir [Pathname.new('tmp/tmpdirtmp2'), Pathname.new('tmp/tmpdirtmp3')] } end @@ -518,7 +533,7 @@ end end rm_rf 'tmpdir' dirs.each do |d| - mkdir_p File.expand_path(d) + mkdir_p "#{Dir.pwd}/#{d}" assert_directory d end rm_rf 'tmpdir' |