summaryrefslogtreecommitdiff
path: root/ruby_1_8_6/test/fileutils/test_fileutils.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ruby_1_8_6/test/fileutils/test_fileutils.rb')
-rw-r--r--ruby_1_8_6/test/fileutils/test_fileutils.rb1085
1 files changed, 0 insertions, 1085 deletions
diff --git a/ruby_1_8_6/test/fileutils/test_fileutils.rb b/ruby_1_8_6/test/fileutils/test_fileutils.rb
deleted file mode 100644
index cab51c9e8c..0000000000
--- a/ruby_1_8_6/test/fileutils/test_fileutils.rb
+++ /dev/null
@@ -1,1085 +0,0 @@
-# $Id$
-
-require 'fileutils'
-require 'fileasserts'
-require 'pathname'
-require 'tmpdir'
-require 'test/unit'
-
-class TestFileUtils < Test::Unit::TestCase
- TMPROOT = "#{Dir.tmpdir}/fileutils.rb.#{$$}"
-end
-
-prevdir = Dir.pwd
-tmproot = TestFileUtils::TMPROOT
-Dir.mkdir tmproot unless File.directory?(tmproot)
-Dir.chdir tmproot
-
-def have_drive_letter?
- /djgpp|mswin(?!ce)|mingw|bcc|emx/ =~ RUBY_PLATFORM
-end
-
-def have_file_perm?
- /djgpp|mswin|mingw|bcc|wince|emx/ !~ RUBY_PLATFORM
-end
-
-$fileutils_rb_have_symlink = nil
-
-def have_symlink?
- if $fileutils_rb_have_symlink == nil
- $fileutils_rb_have_symlink = check_have_symlink?
- end
- $fileutils_rb_have_symlink
-end
-
-def check_have_symlink?
- File.symlink nil, nil
-rescue NotImplementedError
- return false
-rescue
- return true
-end
-
-$fileutils_rb_have_hardlink = nil
-
-def have_hardlink?
- if $fileutils_rb_have_hardlink == nil
- $fileutils_rb_have_hardlink = check_have_hardlink?
- end
- $fileutils_rb_have_hardlink
-end
-
-def check_have_hardlink?
- File.link nil, nil
-rescue NotImplementedError
- return false
-rescue
- return true
-end
-
-begin
- Dir.mkdir("\n")
- Dir.rmdir("\n")
- def lf_in_path_allowed?
- true
- end
-rescue
- def lf_in_path_allowed?
- false
- end
-end
-
-Dir.chdir prevdir
-Dir.rmdir tmproot
-
-class TestFileUtils
-
- include FileUtils
-
- def check_singleton(name)
- assert_equal true, ::FileUtils.public_methods.include?(name.to_s)
- end
-
- def my_rm_rf(path)
- if File.exist?('/bin/rm')
- system %Q[/bin/rm -rf "#{path}"]
- else
- FileUtils.rm_rf path
- end
- end
-
- def mymkdir(path)
- Dir.mkdir path
- File.chown nil, Process.gid, path if have_file_perm?
- end
-
- def setup
- @prevdir = Dir.pwd
- tmproot = TMPROOT
- mymkdir tmproot unless File.directory?(tmproot)
- Dir.chdir tmproot
- my_rm_rf 'data'; mymkdir 'data'
- my_rm_rf 'tmp'; mymkdir 'tmp'
- prepare_data_file
- end
-
- def teardown
- tmproot = Dir.pwd
- Dir.chdir @prevdir
- my_rm_rf tmproot
- end
-
-
- TARGETS = %w( data/a data/all data/random data/zero )
-
- def prepare_data_file
- File.open('data/a', 'w') {|f|
- 32.times do
- f.puts 'a' * 50
- end
- }
-
- all_chars = (0..255).map {|n| n.chr }.join('')
- File.open('data/all', 'w') {|f|
- 32.times do
- f.puts all_chars
- end
- }
-
- random_chars = (0...50).map { rand(256).chr }.join('')
- File.open('data/random', 'w') {|f|
- 32.times do
- f.puts random_chars
- end
- }
-
- File.open('data/zero', 'w') {|f|
- ;
- }
- end
-
- BIGFILE = 'data/big'
-
- def prepare_big_file
- File.open('data/big', 'w') {|f|
- (4 * 1024 * 1024 / 256).times do # 4MB
- f.print "aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa\n"
- end
- }
- end
-
- def prepare_time_data
- File.open('data/old', 'w') {|f| f.puts 'dummy' }
- File.open('data/newer', 'w') {|f| f.puts 'dummy' }
- File.open('data/newest', 'w') {|f| f.puts 'dummy' }
- t = Time.now
- File.utime t-8, t-8, 'data/old'
- File.utime t-4, t-4, 'data/newer'
- end
-
- def each_srcdest
- TARGETS.each do |path|
- yield path, "tmp/#{File.basename(path)}"
- end
- end
-
- #
- # Test Cases
- #
-
- def test_pwd
- check_singleton :pwd
-
- assert_equal Dir.pwd, pwd()
-
- cwd = Dir.pwd
-if have_drive_letter?
- cd('C:/') {
- assert_equal 'C:/', pwd()
- }
- assert_equal cwd, pwd()
-else
- cd('/') {
- assert_equal '/', pwd()
- }
- assert_equal cwd, pwd()
-end
- end
-
- def test_cmp
- check_singleton :cmp
-
- TARGETS.each do |fname|
- assert cmp(fname, fname), 'not same?'
- end
- assert_raises(ArgumentError) {
- cmp TARGETS[0], TARGETS[0], :undefinedoption => true
- }
-
- # pathname
- touch 'tmp/cmptmp'
- assert_nothing_raised {
- cmp Pathname.new('tmp/cmptmp'), 'tmp/cmptmp'
- cmp 'tmp/cmptmp', Pathname.new('tmp/cmptmp')
- cmp Pathname.new('tmp/cmptmp'), Pathname.new('tmp/cmptmp')
- }
- end
-
- def test_cp
- check_singleton :cp
-
- each_srcdest do |srcpath, destpath|
- cp srcpath, destpath
- assert_same_file srcpath, destpath
-
- cp srcpath, File.dirname(destpath)
- assert_same_file srcpath, destpath
-
- cp srcpath, File.dirname(destpath) + '/'
- assert_same_file srcpath, destpath
-
- cp srcpath, destpath, :preserve => true
- assert_same_file srcpath, destpath
- assert_same_entry srcpath, destpath
- end
-
- # src==dest (1) same path
- touch 'tmp/cptmp'
- assert_raises(ArgumentError) {
- cp 'tmp/cptmp', 'tmp/cptmp'
- }
-if have_symlink?
- # src==dest (2) symlink and its target
- File.symlink 'cptmp', 'tmp/cptmp_symlink'
- assert_raises(ArgumentError) {
- cp 'tmp/cptmp', 'tmp/cptmp_symlink'
- }
- assert_raises(ArgumentError) {
- cp 'tmp/cptmp_symlink', 'tmp/cptmp'
- }
- # src==dest (3) looped symlink
- File.symlink 'symlink', 'tmp/symlink'
- assert_raises(Errno::ELOOP) {
- cp 'tmp/symlink', 'tmp/symlink'
- }
-end
-
- # pathname
- assert_nothing_raised {
- cp 'tmp/cptmp', Pathname.new('tmp/tmpdest')
- cp Pathname.new('tmp/cptmp'), 'tmp/tmpdest'
- cp Pathname.new('tmp/cptmp'), Pathname.new('tmp/tmpdest')
- mkdir 'tmp/tmpdir'
- cp ['tmp/cptmp', 'tmp/tmpdest'], Pathname.new('tmp/tmpdir')
- }
- end
-
- def test_cp_r
- check_singleton :cp_r
-
- cp_r 'data', 'tmp'
- TARGETS.each do |fname|
- assert_same_file fname, "tmp/#{fname}"
- end
-
- cp_r 'data', 'tmp2', :preserve => true
- TARGETS.each do |fname|
- assert_same_entry fname, "tmp2/#{File.basename(fname)}"
- assert_same_file fname, "tmp2/#{File.basename(fname)}"
- end
-
- # a/* -> b/*
- mkdir 'tmp/cpr_src'
- mkdir 'tmp/cpr_dest'
- File.open('tmp/cpr_src/a', 'w') {|f| f.puts 'a' }
- File.open('tmp/cpr_src/b', 'w') {|f| f.puts 'b' }
- File.open('tmp/cpr_src/c', 'w') {|f| f.puts 'c' }
- mkdir 'tmp/cpr_src/d'
- cp_r 'tmp/cpr_src/.', 'tmp/cpr_dest'
- assert_same_file 'tmp/cpr_src/a', 'tmp/cpr_dest/a'
- assert_same_file 'tmp/cpr_src/b', 'tmp/cpr_dest/b'
- assert_same_file 'tmp/cpr_src/c', 'tmp/cpr_dest/c'
- assert_directory 'tmp/cpr_dest/d'
- my_rm_rf 'tmp/cpr_src'
- my_rm_rf 'tmp/cpr_dest'
-
-if have_symlink?
- # symlink in a directory
- mkdir 'tmp/cpr_src'
- ln_s 'SLdest', 'tmp/cpr_src/symlink'
- cp_r 'tmp/cpr_src', 'tmp/cpr_dest'
- assert_symlink 'tmp/cpr_dest/symlink'
- assert_equal 'SLdest', File.readlink('tmp/cpr_dest/symlink')
-
- # root is a symlink
- ln_s 'cpr_src', 'tmp/cpr_src2'
- cp_r 'tmp/cpr_src2', 'tmp/cpr_dest2'
- assert_directory 'tmp/cpr_dest2'
- #assert_not_symlink 'tmp/cpr_dest2'
- # * 2005-05-26: feature change on trunk
- #assert_symlink 'tmp/cpr_dest2'
- # * 2005-09-19: revert for 1.8 (:dereference_root => true by default)
- assert_not_symlink 'tmp/cpr_dest2'
- assert_symlink 'tmp/cpr_dest2/symlink'
- assert_equal 'SLdest', File.readlink('tmp/cpr_dest2/symlink')
-end
-
- # pathname
- touch 'tmp/cprtmp'
- assert_nothing_raised {
- cp_r Pathname.new('tmp/cprtmp'), 'tmp/tmpdest'
- cp_r 'tmp/cprtmp', Pathname.new('tmp/tmpdest')
- cp_r Pathname.new('tmp/cprtmp'), Pathname.new('tmp/tmpdest')
- }
- end
-
- def test_mv
- check_singleton :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
-
- # [ruby-talk:124368]
- mkdir 'tmp/tmpdir'
- mkdir_p 'tmp/dest2/tmpdir'
- assert_raises(Errno::EEXIST) {
- mv 'tmp/tmpdir', 'tmp/dest2'
- }
- mkdir 'tmp/dest2/tmpdir/junk'
- assert_raises(Errno::EEXIST) {
- mv 'tmp/tmpdir', 'tmp/dest2'
- }
-
- # src==dest (1) same path
- touch 'tmp/cptmp'
- assert_raises(ArgumentError) {
- mv 'tmp/cptmp', 'tmp/cptmp'
- }
-if have_symlink?
- # src==dest (2) symlink and its target
- File.symlink 'cptmp', 'tmp/cptmp_symlink'
- assert_raises(ArgumentError) {
- mv 'tmp/cptmp', 'tmp/cptmp_symlink'
- }
- assert_raises(ArgumentError) {
- mv 'tmp/cptmp_symlink', 'tmp/cptmp'
- }
- # src==dest (3) looped symlink
- File.symlink 'symlink', 'tmp/symlink'
- assert_raises(Errno::ELOOP) {
- mv 'tmp/symlink', 'tmp/symlink'
- }
-end
-
- # pathname
- assert_nothing_raised {
- touch 'tmp/mvtmpsrc'
- mv Pathname.new('tmp/mvtmpsrc'), 'tmp/mvtmpdest'
- touch 'tmp/mvtmpsrc'
- mv 'tmp/mvtmpsrc', Pathname.new('tmp/mvtmpdest')
- touch 'tmp/mvtmpsrc'
- mv Pathname.new('tmp/mvtmpsrc'), Pathname.new('tmp/mvtmpdest')
- }
- end
-
- def test_rm
- check_singleton :rm
-
- TARGETS.each do |fname|
- cp fname, 'tmp/rmsrc'
- rm 'tmp/rmsrc'
- assert_file_not_exist 'tmp/rmsrc'
- end
-
- # pathname
- touch 'tmp/rmtmp1'
- touch 'tmp/rmtmp2'
- touch 'tmp/rmtmp3'
- assert_nothing_raised {
- rm Pathname.new('tmp/rmtmp1')
- rm [Pathname.new('tmp/rmtmp2'), Pathname.new('tmp/rmtmp3')]
- }
- assert_file_not_exist 'tmp/rmtmp1'
- assert_file_not_exist 'tmp/rmtmp2'
- assert_file_not_exist 'tmp/rmtmp3'
- end
-
- def test_rm_f
- check_singleton :rm_f
-
- TARGETS.each do |fname|
- cp fname, 'tmp/rmsrc'
- rm_f 'tmp/rmsrc'
- assert_file_not_exist 'tmp/rmsrc'
- end
-
-if have_symlink?
- File.open('tmp/lnf_symlink_src', 'w') {|f| f.puts 'dummy' }
- File.symlink 'tmp/lnf_symlink_src', 'tmp/lnf_symlink_dest'
- rm_f 'tmp/lnf_symlink_dest'
- assert_file_not_exist 'tmp/lnf_symlink_dest'
- assert_file_exist 'tmp/lnf_symlink_src'
-end
-
- rm_f 'notexistdatafile'
- rm_f 'tmp/notexistdatafile'
- my_rm_rf 'tmpdatadir'
- Dir.mkdir 'tmpdatadir'
- # rm_f 'tmpdatadir'
- Dir.rmdir 'tmpdatadir'
-
- Dir.mkdir 'tmp/tmpdir'
- File.open('tmp/tmpdir/a', 'w') {|f| f.puts 'dummy' }
- File.open('tmp/tmpdir/c', 'w') {|f| f.puts 'dummy' }
- rm_f ['tmp/tmpdir/a', 'tmp/tmpdir/b', 'tmp/tmpdir/c']
- assert_file_not_exist 'tmp/tmpdir/a'
- assert_file_not_exist 'tmp/tmpdir/c'
- Dir.rmdir 'tmp/tmpdir'
-
- # pathname
- touch 'tmp/rmtmp1'
- touch 'tmp/rmtmp2'
- touch 'tmp/rmtmp3'
- touch 'tmp/rmtmp4'
- assert_nothing_raised {
- rm_f Pathname.new('tmp/rmtmp1')
- rm_f [Pathname.new('tmp/rmtmp2'), Pathname.new('tmp/rmtmp3')]
- }
- assert_file_not_exist 'tmp/rmtmp1'
- assert_file_not_exist 'tmp/rmtmp2'
- assert_file_not_exist 'tmp/rmtmp3'
- assert_file_exist 'tmp/rmtmp4'
- end
-
- def test_rm_r
- check_singleton :rm_r
-
- my_rm_rf 'tmpdatadir'
-
- Dir.mkdir 'tmpdatadir'
- rm_r 'tmpdatadir'
- assert_file_not_exist 'tmpdatadir'
-
- Dir.mkdir 'tmpdatadir'
- rm_r 'tmpdatadir/'
- assert_file_not_exist 'tmpdatadir'
-
- Dir.mkdir 'tmp/tmpdir'
- rm_r 'tmp/tmpdir/'
- assert_file_not_exist 'tmp/tmpdir'
- assert_file_exist 'tmp'
-
- Dir.mkdir 'tmp/tmpdir'
- rm_r 'tmp/tmpdir'
- assert_file_not_exist 'tmp/tmpdir'
- assert_file_exist 'tmp'
-
- Dir.mkdir 'tmp/tmpdir'
- File.open('tmp/tmpdir/a', 'w') {|f| f.puts 'dummy' }
- File.open('tmp/tmpdir/b', 'w') {|f| f.puts 'dummy' }
- File.open('tmp/tmpdir/c', 'w') {|f| f.puts 'dummy' }
- rm_r 'tmp/tmpdir'
- assert_file_not_exist 'tmp/tmpdir'
- assert_file_exist 'tmp'
-
- Dir.mkdir 'tmp/tmpdir'
- File.open('tmp/tmpdir/a', 'w') {|f| f.puts 'dummy' }
- File.open('tmp/tmpdir/c', 'w') {|f| f.puts 'dummy' }
- rm_r ['tmp/tmpdir/a', 'tmp/tmpdir/b', 'tmp/tmpdir/c'], :force => true
- assert_file_not_exist 'tmp/tmpdir/a'
- assert_file_not_exist 'tmp/tmpdir/c'
- Dir.rmdir 'tmp/tmpdir'
-
-if have_symlink?
- # [ruby-talk:94635] a symlink to the directory
- Dir.mkdir 'tmp/tmpdir'
- File.symlink '..', 'tmp/tmpdir/symlink_to_dir'
- rm_r 'tmp/tmpdir'
- assert_file_not_exist 'tmp/tmpdir'
- assert_file_exist 'tmp'
-end
-
- # pathname
- Dir.mkdir 'tmp/tmpdir1'; touch 'tmp/tmpdir1/tmp'
- Dir.mkdir 'tmp/tmpdir2'; touch 'tmp/tmpdir2/tmp'
- Dir.mkdir 'tmp/tmpdir3'; touch 'tmp/tmpdir3/tmp'
- assert_nothing_raised {
- rm_r Pathname.new('tmp/tmpdir1')
- rm_r [Pathname.new('tmp/tmpdir2'), Pathname.new('tmp/tmpdir3')]
- }
- assert_file_not_exist 'tmp/tmpdir1'
- assert_file_not_exist 'tmp/tmpdir2'
- assert_file_not_exist 'tmp/tmpdir3'
- end
-
- def test_remove_entry_secure
- check_singleton :remove_entry_secure
-
- my_rm_rf 'tmpdatadir'
-
- Dir.mkdir 'tmpdatadir'
- remove_entry_secure 'tmpdatadir'
- assert_file_not_exist 'tmpdatadir'
-
- Dir.mkdir 'tmpdatadir'
- remove_entry_secure 'tmpdatadir/'
- assert_file_not_exist 'tmpdatadir'
-
- Dir.mkdir 'tmp/tmpdir'
- remove_entry_secure 'tmp/tmpdir/'
- assert_file_not_exist 'tmp/tmpdir'
- assert_file_exist 'tmp'
-
- Dir.mkdir 'tmp/tmpdir'
- remove_entry_secure 'tmp/tmpdir'
- assert_file_not_exist 'tmp/tmpdir'
- assert_file_exist 'tmp'
-
- Dir.mkdir 'tmp/tmpdir'
- File.open('tmp/tmpdir/a', 'w') {|f| f.puts 'dummy' }
- File.open('tmp/tmpdir/b', 'w') {|f| f.puts 'dummy' }
- File.open('tmp/tmpdir/c', 'w') {|f| f.puts 'dummy' }
- remove_entry_secure 'tmp/tmpdir'
- assert_file_not_exist 'tmp/tmpdir'
- assert_file_exist 'tmp'
-
- Dir.mkdir 'tmp/tmpdir'
- File.open('tmp/tmpdir/a', 'w') {|f| f.puts 'dummy' }
- File.open('tmp/tmpdir/c', 'w') {|f| f.puts 'dummy' }
- remove_entry_secure 'tmp/tmpdir/a', true
- remove_entry_secure 'tmp/tmpdir/b', true
- remove_entry_secure 'tmp/tmpdir/c', true
- assert_file_not_exist 'tmp/tmpdir/a'
- assert_file_not_exist 'tmp/tmpdir/c'
- Dir.rmdir 'tmp/tmpdir'
-
-if have_symlink?
- # [ruby-talk:94635] a symlink to the directory
- Dir.mkdir 'tmp/tmpdir'
- File.symlink '..', 'tmp/tmpdir/symlink_to_dir'
- remove_entry_secure 'tmp/tmpdir'
- assert_file_not_exist 'tmp/tmpdir'
- assert_file_exist 'tmp'
-end
-
- # pathname
- Dir.mkdir 'tmp/tmpdir1'; touch 'tmp/tmpdir1/tmp'
- assert_nothing_raised {
- remove_entry_secure Pathname.new('tmp/tmpdir1')
- }
- assert_file_not_exist 'tmp/tmpdir1'
- end
-
- def test_with_big_file
- prepare_big_file
-
- cp BIGFILE, 'tmp/cpdest'
- assert_same_file BIGFILE, 'tmp/cpdest'
- assert cmp(BIGFILE, 'tmp/cpdest'), 'orig != copied'
-
- mv 'tmp/cpdest', 'tmp/mvdest'
- assert_same_file BIGFILE, 'tmp/mvdest'
- assert_file_not_exist 'tmp/cpdest'
-
- rm 'tmp/mvdest'
- assert_file_not_exist 'tmp/mvdest'
- end
-
-if have_hardlink?
- def test_ln
- TARGETS.each do |fname|
- ln fname, 'tmp/lndest'
- assert_same_file fname, 'tmp/lndest'
- File.unlink 'tmp/lndest'
- end
-
- ln TARGETS, 'tmp'
- TARGETS.each do |fname|
- assert_same_file fname, 'tmp/' + File.basename(fname)
- end
- TARGETS.each do |fname|
- File.unlink 'tmp/' + File.basename(fname)
- end
-
- # src==dest (1) same path
- touch 'tmp/cptmp'
- assert_raises(Errno::EEXIST) {
- ln 'tmp/cptmp', 'tmp/cptmp'
- }
-if have_symlink?
- # src==dest (2) symlink and its target
- File.symlink 'cptmp', 'tmp/symlink'
- assert_raises(Errno::EEXIST) {
- ln 'tmp/cptmp', 'tmp/symlink' # normal file -> symlink
- }
- assert_raises(Errno::EEXIST) {
- ln 'tmp/symlink', 'tmp/cptmp' # symlink -> normal file
- }
- # src==dest (3) looped symlink
- File.symlink 'cptmp_symlink', 'tmp/cptmp_symlink'
- begin
- ln 'tmp/cptmp_symlink', 'tmp/cptmp_symlink'
- rescue => err
- assert_kind_of SystemCallError, err
- end
-end
-
- # pathname
- touch 'tmp/lntmp'
- assert_nothing_raised {
- ln Pathname.new('tmp/lntmp'), 'tmp/lndesttmp1'
- ln 'tmp/lntmp', Pathname.new('tmp/lndesttmp2')
- ln Pathname.new('tmp/lntmp'), Pathname.new('tmp/lndesttmp3')
- }
- end
-end
-
-if have_symlink?
- def test_ln_s
- check_singleton :ln_s
-
- TARGETS.each do |fname|
- ln_s fname, 'tmp/lnsdest'
- assert FileTest.symlink?('tmp/lnsdest'), 'not symlink'
- assert_equal fname, File.readlink('tmp/lnsdest')
- rm_f 'tmp/lnsdest'
- end
- assert_nothing_raised {
- ln_s 'symlink', 'tmp/symlink'
- }
- assert_symlink 'tmp/symlink'
-
- # pathname
- touch 'tmp/lnsdest'
- assert_nothing_raised {
- ln_s Pathname.new('lnsdest'), 'tmp/symlink_tmp1'
- ln_s 'lnsdest', Pathname.new('tmp/symlink_tmp2')
- ln_s Pathname.new('lnsdest'), Pathname.new('tmp/symlink_tmp3')
- }
- end
-end
-
-if have_symlink?
- def test_ln_sf
- check_singleton :ln_sf
-
- TARGETS.each do |fname|
- ln_sf fname, 'tmp/lnsdest'
- assert FileTest.symlink?('tmp/lnsdest'), 'not symlink'
- assert_equal fname, File.readlink('tmp/lnsdest')
- ln_sf fname, 'tmp/lnsdest'
- ln_sf fname, 'tmp/lnsdest'
- end
- assert_nothing_raised {
- ln_sf 'symlink', 'tmp/symlink'
- }
-
- # pathname
- touch 'tmp/lns_dest'
- assert_nothing_raised {
- ln_sf Pathname.new('lns_dest'), 'tmp/symlink_tmp1'
- ln_sf 'lns_dest', Pathname.new('tmp/symlink_tmp2')
- ln_sf Pathname.new('lns_dest'), Pathname.new('tmp/symlink_tmp3')
- }
- end
-end
-
- def test_mkdir
- check_singleton :mkdir
-
- my_rm_rf 'tmpdatadir'
- mkdir 'tmpdatadir'
- 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'
-
- mkdir 'tmp/tmp', :mode => 0700
- assert_directory 'tmp/tmp'
- assert_equal 0700, (File.stat('tmp/tmp').mode & 0777) if have_file_perm?
- Dir.rmdir 'tmp/tmp'
-
-if have_file_perm?
- mkdir 'tmp/tmp', :mode => 07777
- assert_directory 'tmp/tmp'
- assert_equal 07777, (File.stat('tmp/tmp').mode & 07777)
- Dir.rmdir 'tmp/tmp'
-end
-
-if lf_in_path_allowed?
- mkdir "tmp-first-line\ntmp-second-line"
- assert_directory "tmp-first-line\ntmp-second-line"
- Dir.rmdir "tmp-first-line\ntmp-second-line"
-end
-
- # pathname
- assert_nothing_raised {
- mkdir Pathname.new('tmp/tmpdirtmp')
- mkdir [Pathname.new('tmp/tmpdirtmp2'), Pathname.new('tmp/tmpdirtmp3')]
- }
- end
-
- def test_mkdir_p
- check_singleton :mkdir_p
-
- dirs = %w(
- tmpdir/dir/
- tmpdir/dir/./
- tmpdir/dir/./.././dir/
- tmpdir/a
- tmpdir/a/
- tmpdir/a/b
- tmpdir/a/b/
- tmpdir/a/b/c/
- tmpdir/a/b/c
- tmpdir/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a
- tmpdir/a/a
- )
- my_rm_rf 'tmpdir'
- dirs.each do |d|
- mkdir_p d
- assert_directory d
- assert_file_not_exist "#{d}/a"
- assert_file_not_exist "#{d}/b"
- assert_file_not_exist "#{d}/c"
- my_rm_rf 'tmpdir'
- end
- dirs.each do |d|
- mkdir_p d
- assert_directory d
- end
- rm_rf 'tmpdir'
- dirs.each do |d|
- mkdir_p "#{Dir.pwd}/#{d}"
- assert_directory d
- end
- rm_rf 'tmpdir'
-
- mkdir_p 'tmp/tmp/tmp', :mode => 0700
- assert_directory 'tmp/tmp'
- assert_directory 'tmp/tmp/tmp'
- assert_equal 0700, (File.stat('tmp/tmp').mode & 0777) if have_file_perm?
- assert_equal 0700, (File.stat('tmp/tmp/tmp').mode & 0777) if have_file_perm?
- rm_rf 'tmp/tmp'
-
- mkdir_p 'tmp/tmp', :mode => 0
- assert_directory 'tmp/tmp'
- assert_equal 0, (File.stat('tmp/tmp').mode & 0777) if have_file_perm?
- # DO NOT USE rm_rf here.
- # (rm(1) try to chdir to parent directory, it fails to remove directory.)
- Dir.rmdir 'tmp/tmp'
- Dir.rmdir 'tmp'
-
-if have_file_perm?
- mkdir_p 'tmp/tmp/tmp', :mode => 07777
- assert_directory 'tmp/tmp/tmp'
- assert_equal 07777, (File.stat('tmp/tmp/tmp').mode & 07777)
- Dir.rmdir 'tmp/tmp/tmp'
- Dir.rmdir 'tmp/tmp'
-end
-
- # pathname
- assert_nothing_raised {
- mkdir_p Pathname.new('tmp/tmp/tmp')
- }
- end
-
- def test_install
- check_singleton :install
-
- File.open('tmp/aaa', 'w') {|f| f.puts 'aaa' }
- File.open('tmp/bbb', 'w') {|f| f.puts 'bbb' }
- install 'tmp/aaa', 'tmp/bbb', :mode => 0600
- assert_equal "aaa\n", File.read('tmp/bbb')
- assert_equal 0600, (File.stat('tmp/bbb').mode & 0777) if have_file_perm?
-
- t = File.mtime('tmp/bbb')
- install 'tmp/aaa', 'tmp/bbb'
- assert_equal "aaa\n", File.read('tmp/bbb')
- assert_equal 0600, (File.stat('tmp/bbb').mode & 0777) if have_file_perm?
- assert_equal t, File.mtime('tmp/bbb')
-
- File.unlink 'tmp/aaa'
- File.unlink 'tmp/bbb'
-
- # src==dest (1) same path
- touch 'tmp/cptmp'
- assert_raises(ArgumentError) {
- install 'tmp/cptmp', 'tmp/cptmp'
- }
-if have_symlink?
- # src==dest (2) symlink and its target
- File.symlink 'cptmp', 'tmp/cptmp_symlink'
- assert_raises(ArgumentError) {
- install 'tmp/cptmp', 'tmp/cptmp_symlink'
- }
- assert_raises(ArgumentError) {
- install 'tmp/cptmp_symlink', 'tmp/cptmp'
- }
- # src==dest (3) looped symlink
- File.symlink 'symlink', 'tmp/symlink'
- assert_raises(Errno::ELOOP) {
- # File#install invokes open(2), always ELOOP must be raised
- install 'tmp/symlink', 'tmp/symlink'
- }
-end
-
- # pathname
- assert_nothing_raised {
- rm_f 'tmp/a'; touch 'tmp/a'
- install 'tmp/a', Pathname.new('tmp/b')
- rm_f 'tmp/a'; touch 'tmp/a'
- install Pathname.new('tmp/a'), 'tmp/b'
- rm_f 'tmp/a'; touch 'tmp/a'
- install Pathname.new('tmp/a'), Pathname.new('tmp/b')
- rm_f 'tmp/a'
- touch 'tmp/a'
- touch 'tmp/b'
- mkdir 'tmp/dest'
- install [Pathname.new('tmp/a'), Pathname.new('tmp/b')], 'tmp/dest'
- my_rm_rf 'tmp/dest'
- mkdir 'tmp/dest'
- install [Pathname.new('tmp/a'), Pathname.new('tmp/b')], Pathname.new('tmp/dest')
- }
- end
-
-if have_file_perm?
- def test_chmod
- check_singleton :chmod
-
- touch 'tmp/a'
- chmod 0700, 'tmp/a'
- assert_equal 0700, File.stat('tmp/a').mode & 0777
- chmod 0500, 'tmp/a'
- assert_equal 0500, File.stat('tmp/a').mode & 0777
- end
-
- def test_chmod_R
- check_singleton :chmod_R
-
- mkdir_p 'tmp/dir/dir'
- touch %w( tmp/dir/file tmp/dir/dir/file )
- chmod_R 0700, 'tmp/dir'
- assert_equal 0700, File.stat('tmp/dir').mode & 0777
- assert_equal 0700, File.stat('tmp/dir/file').mode & 0777
- assert_equal 0700, File.stat('tmp/dir/dir').mode & 0777
- assert_equal 0700, File.stat('tmp/dir/dir/file').mode & 0777
- chmod_R 0500, 'tmp/dir'
- assert_equal 0500, File.stat('tmp/dir').mode & 0777
- assert_equal 0500, File.stat('tmp/dir/file').mode & 0777
- assert_equal 0500, File.stat('tmp/dir/dir').mode & 0777
- assert_equal 0500, File.stat('tmp/dir/dir/file').mode & 0777
- chmod_R 0700, 'tmp/dir' # to remove
- end
-
- # FIXME: How can I test this method?
- def test_chown
- check_singleton :chown
- end
-
- # FIXME: How can I test this method?
- def test_chown_R
- check_singleton :chown_R
- end
-end
-
- def test_copy_entry
- check_singleton :copy_entry
-
- each_srcdest do |srcpath, destpath|
- copy_entry srcpath, destpath
- assert_same_file srcpath, destpath
- assert_equal File.stat(srcpath).ftype, File.stat(destpath).ftype
- end
-if have_symlink?
- # root is a symlink
- File.symlink 'somewhere', 'tmp/symsrc'
- copy_entry 'tmp/symsrc', 'tmp/symdest'
- assert_symlink 'tmp/symdest'
- assert_equal 'somewhere', File.readlink('tmp/symdest')
-
- # content is a symlink
- mkdir 'tmp/dir'
- File.symlink 'somewhere', 'tmp/dir/sym'
- copy_entry 'tmp/dir', 'tmp/dirdest'
- assert_directory 'tmp/dirdest'
- assert_not_symlink 'tmp/dirdest'
- assert_symlink 'tmp/dirdest/sym'
- assert_equal 'somewhere', File.readlink('tmp/dirdest/sym')
-end
- end
-
- def test_copy_file
- check_singleton :copy_file
-
- each_srcdest do |srcpath, destpath|
- copy_file srcpath, destpath
- assert_same_file srcpath, destpath
- end
- end
-
- def test_copy_stream
- check_singleton :copy_stream
- # IO
- each_srcdest do |srcpath, destpath|
- File.open(srcpath) {|src|
- File.open(destpath, 'w') {|dest|
- copy_stream src, dest
- }
- }
- assert_same_file srcpath, destpath
- end
-
- # duck typing test [ruby-dev:25369]
- my_rm_rf 'tmp'
- Dir.mkdir 'tmp'
- each_srcdest do |srcpath, destpath|
- File.open(srcpath) {|src|
- File.open(destpath, 'w') {|dest|
- copy_stream Stream.new(src), Stream.new(dest)
- }
- }
- assert_same_file srcpath, destpath
- end
- end
-
- def test_remove_file
- check_singleton :remove_file
- File.open('data/tmp', 'w') {|f| f.puts 'dummy' }
- remove_file 'data/tmp'
- assert_file_not_exist 'data/tmp'
-if have_file_perm?
- File.open('data/tmp', 'w') {|f| f.puts 'dummy' }
- File.chmod 0, 'data/tmp'
- remove_file 'data/tmp'
- assert_file_not_exist 'data/tmp'
-end
- end
-
- def test_remove_dir
- check_singleton :remove_dir
- Dir.mkdir 'data/tmpdir'
- File.open('data/tmpdir/a', 'w') {|f| f.puts 'dummy' }
- remove_dir 'data/tmpdir'
- assert_file_not_exist 'data/tmpdir'
-if have_file_perm?
- Dir.mkdir 'data/tmpdir'
- File.chmod 0555, 'data/tmpdir'
- remove_dir 'data/tmpdir'
- assert_file_not_exist 'data/tmpdir'
-end
- end
-
- def test_compare_file
- check_singleton :compare_file
- # FIXME
- end
-
- def test_compare_stream
- check_singleton :compare_stream
- # FIXME
- end
-
- class Stream
- def initialize(f)
- @f = f
- end
-
- def read(n)
- @f.read(n)
- end
-
- def write(str)
- @f.write str
- end
- end
-
- def test_uptodate?
- check_singleton :uptodate?
- prepare_time_data
- Dir.chdir('data') {
- assert( uptodate?('newest', %w(old newer notexist)) )
- assert( ! uptodate?('newer', %w(old newest notexist)) )
- assert( ! uptodate?('notexist', %w(old newest newer)) )
- }
-
- # pathname
- touch 'tmp/a'
- touch 'tmp/b'
- touch 'tmp/c'
- assert_nothing_raised {
- uptodate? Pathname.new('tmp/a'), ['tmp/b', 'tmp/c']
- uptodate? 'tmp/a', [Pathname.new('tmp/b'), 'tmp/c']
- uptodate? 'tmp/a', ['tmp/b', Pathname.new('tmp/c')]
- uptodate? Pathname.new('tmp/a'), [Pathname.new('tmp/b'), Pathname.new('tmp/c')]
- }
- end
-
- def test_cd
- check_singleton :cd
- end
-
- def test_chdir
- check_singleton :chdir
- end
-
- def test_getwd
- check_singleton :getwd
- end
-
- def test_identical?
- check_singleton :identical?
- end
-
- def test_link
- check_singleton :link
- end
-
- def test_makedirs
- check_singleton :makedirs
- end
-
- def test_mkpath
- check_singleton :mkpath
- end
-
- def test_move
- check_singleton :move
- end
-
- def test_rm_rf
- check_singleton :rm_rf
- end
-
- def test_rmdir
- check_singleton :rmdir
- end
-
- def test_rmtree
- check_singleton :rmtree
- end
-
- def test_safe_unlink
- check_singleton :safe_unlink
- end
-
- def test_symlink
- check_singleton :symlink
- end
-
- def test_touch
- check_singleton :touch
- end
-
- def test_collect_methods
- end
-
- def test_commands
- end
-
- def test_have_option?
- end
-
- def test_options
- end
-
- def test_options_of
- end
-
-end