1require File.expand_path('../helper', __FILE__)
2require 'fileutils'
3
4class TestRakeDirectoryTask < Rake::TestCase
5  include Rake
6
7  def test_directory
8    desc "DESC"
9
10    directory "a/b/c"
11
12    assert_equal FileCreationTask, Task["a"].class
13    assert_equal FileCreationTask, Task["a/b"].class
14    assert_equal FileCreationTask, Task["a/b/c"].class
15
16    assert_nil             Task["a"].comment
17    assert_nil             Task["a/b"].comment
18    assert_equal "DESC",   Task["a/b/c"].comment
19
20    verbose(false) {
21      Task['a/b'].invoke
22    }
23
24    assert File.exist?("a/b")
25    refute File.exist?("a/b/c")
26  end
27
28  if Rake::Win32.windows?
29    def test_directory_win32
30      desc "WIN32 DESC"
31      directory 'c:/a/b/c'
32      assert_equal FileTask, Task['c:'].class
33      assert_equal FileCreationTask, Task['c:/a'].class
34      assert_equal FileCreationTask, Task['c:/a/b'].class
35      assert_equal FileCreationTask, Task['c:/a/b/c'].class
36      assert_nil             Task['c:/'].comment
37      assert_equal "WIN32 DESC",   Task['c:/a/b/c'].comment
38      assert_nil             Task['c:/a/b'].comment
39    end
40  end
41
42  def test_can_use_blocks
43    runlist = []
44
45    t1 = directory("a/b/c" => :t2) { |t| runlist << t.name }
46    task(:t2) { |t| runlist << t.name }
47
48    verbose(false) {
49      t1.invoke
50    }
51
52    assert_equal Task["a/b/c"], t1
53    assert_equal FileCreationTask, Task["a/b/c"].class
54    assert_equal ["t2", "a/b/c"], runlist
55    assert File.directory?("a/b/c")
56  end
57end
58