Bug #7824 ยป rmdir_parents.patch
lib/fileutils.rb | ||
---|---|---|
public
|
||
#
|
||
# Options: noop, verbose
|
||
# Options: noop, verbose, parents
|
||
#
|
||
# Removes one or more directories.
|
||
#
|
||
... | ... | |
Dir.rmdir(dir = dir.chomp(?/))
|
||
if parents
|
||
until (parent = File.dirname(dir)) == '.' or parent == dir
|
||
Dir.rmdir(dir)
|
||
Dir.rmdir(dir = parent)
|
||
end
|
||
end
|
||
rescue Errno::ENOTEMPTY, Errno::ENOENT
|
test/fileutils/test_fileutils.rb | ||
---|---|---|
def test_rmdir
|
||
check_singleton :rmdir
|
||
Dir.mkdir 'tmp/a'
|
||
Dir.mkdir 'tmp/a/b'
|
||
rmdir 'tmp/a/b'
|
||
assert_file_not_exist 'tmp/a/b'
|
||
assert_file_exist 'tmp/a'
|
||
Dir.mkdir 'tmp/a/b'
|
||
touch 'tmp/a/b/file'
|
||
assert_nothing_raised {
|
||
rmdir 'tmp/a/b'
|
||
}
|
||
assert_file_exist 'tmp/a/b'
|
||
end
|
||
def test_rmdir_parents
|
||
check_singleton :rmdir
|
||
Dir.mkdir 'tmp/a'
|
||
Dir.mkdir 'tmp/a/b'
|
||
Dir.chdir('tmp') {
|
||
rmdir 'a/b', parents: true
|
||
}
|
||
assert_file_not_exist 'tmp/a/b'
|
||
assert_file_not_exist 'tmp/a'
|
||
assert_file_exist 'tmp'
|
||
Dir.mkdir 'tmp/a'
|
||
touch 'tmp/a/file'
|
||
Dir.mkdir 'tmp/a/b'
|
||
assert_nothing_raised {
|
||
Dir.chdir('tmp') {
|
||
rmdir 'a/b', parents: true
|
||
}
|
||
}
|
||
assert_file_not_exist 'tmp/a/b'
|
||
assert_file_exist 'tmp/a'
|
||
end
|
||
def test_rmtree
|