Forum: Ruby Trouble with FileUtils.rm_rf / .rmdir

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
James B. Byrne (Guest)
on 2006-02-21 20:10
I am trying to dynamically setup and teardown a directory structure for
testing.  The code that I am using employs .rm_rf but I get the same
results if I use
.rmdir instead.

$:.unshift File.join(File.dirname(__FILE__), "..", "lib")

require 'test/unit'
require 'fileutils'
require 'mv2dir'

class Test_Mv2Dir < Test::Unit::TestCase
# What are we going to test for?

  #1. Test that instances test for valid directories and return
  #   TRUE or FALSE as expected.
  def test_dir
    #-- a.  define test directories
      dir_test =
    #-- b.  clear them out:
    dir_test.each do |dt|
      puts dt
      FileUtils.rm_rf(dt, :verbose => TRUE, :secure => TRUE)
#     FileUtils.rmdir(dt, :verbose => TRUE) rescue Errno::ENOENT

These are the results.  ~/tmp/mv2dir/test/target exists before the run.
It is my intention that it be gone at the end of the run.  It is not.
anyone point out to me what I am doing wrong?

ll ~/tmp/mv2dir/test/
total 8
drwxrwxr-x  2 byrnejb byrnejb 4096 Feb 21 12:11 target
[byrnejb@inet05 test]$ ruby mv2dir_tc.rb
Loaded suite mv2dir_tc
rm -rf ~/tmp/mv2dir/test/source/
rm -rf ~/tmp/mv2dir/test/target/
Finished in 0.002761 seconds.

3 tests, 0 assertions, 0 failures, 0 errors
[byrnejb@inet05 test]$ ll ~/tmp/mv2dir/test/
total 8
drwxrwxr-x  2 byrnejb byrnejb 4096 Feb 21 12:11 target
James B. Byrne (Guest)
on 2006-02-21 20:54
I can get this to work if I force :secure => FALSE but I do not see why
that should be necessary.  None of the directories in the path
/home/byrnejb/tmp/mv2dir/test/target are world writeable.  However,
unless I call FileUtils.rm_r(dt,:secure => FALSE) the directory is not
removed.  Can someone explain to me what I am misunderstanding with
respect to the documentation?
This topic is locked and can not be replied to.