1
require File.expand_path('../helper', __FILE__)
4
class TestRakeFileTask < Rake::TestCase
12
FileUtils.rm_f NEWFILE
13
FileUtils.rm_f OLDFILE
22
assert_equal name.to_s, ftask.name
23
File.delete(ftask.name) rescue nil
25
assert ftask.needed?, "file should be needed"
27
open(ftask.name, "w") { |f| f.puts "HI" }
29
assert_equal nil, ftask.prerequisites.collect{|n| Task[n].timestamp}.max
30
assert ! ftask.needed?, "file should not be needed"
32
File.delete(ftask.name) rescue nil
35
def test_file_times_new_depends_on_old
36
create_timed_files(OLDFILE, NEWFILE)
38
t1 = Rake.application.intern(FileTask, NEWFILE).enhance([OLDFILE])
39
t2 = Rake.application.intern(FileTask, OLDFILE)
40
assert ! t2.needed?, "Should not need to build old file"
41
assert ! t1.needed?, "Should not need to rebuild new file because of old"
44
def test_file_times_old_depends_on_new
45
create_timed_files(OLDFILE, NEWFILE)
47
t1 = Rake.application.intern(FileTask,OLDFILE).enhance([NEWFILE])
48
t2 = Rake.application.intern(FileTask, NEWFILE)
49
assert ! t2.needed?, "Should not need to build new file"
50
preq_stamp = t1.prerequisites.collect{|t| Task[t].timestamp}.max
51
assert_equal t2.timestamp, preq_stamp
52
assert t1.timestamp < preq_stamp, "T1 should be older"
53
assert t1.needed?, "Should need to rebuild old file because of new"
56
def test_file_depends_on_task_depend_on_file
57
create_timed_files(OLDFILE, NEWFILE)
59
file NEWFILE => [:obj] do |t| @runs << t.name end
60
task :obj => [OLDFILE] do |t| @runs << t.name end
61
file OLDFILE do |t| @runs << t.name end
65
assert ! @runs.include?(NEWFILE)
68
def test_existing_file_depends_on_non_existing_file
77
file OLDFILE => NEWFILE
84
# I have currently disabled this test. I'm not convinced that
85
# deleting the file target on failure is always the proper thing to
86
# do. I'm willing to hear input on this topic.
87
def ztest_file_deletes_on_failure
89
file NEWFILE => [:obj] do |t|
90
FileUtils.touch NEWFILE
98
assert( ! File.exist?(NEWFILE), "NEWFILE should be deleted")