File tree Expand file tree Collapse file tree 3 files changed +46
-1
lines changed
Expand file tree Collapse file tree 3 files changed +46
-1
lines changed Original file line number Diff line number Diff line change @@ -29,7 +29,14 @@ def timestamp
2929
3030 # Are there any prerequisites with a later time than the given time stamp?
3131 def out_of_date? ( stamp )
32- @prerequisites . any? { |n | application [ n , @scope ] . timestamp > stamp }
32+ @prerequisites . any? { |prereq |
33+ prereq_task = application [ prereq , @scope ]
34+ if prereq_task . instance_of? ( Rake ::FileTask )
35+ prereq_task . timestamp > stamp || prereq_task . needed?
36+ else
37+ prereq_task . timestamp > stamp
38+ end
39+ }
3340 end
3441
3542 # ----------------------------------------------------------------
Original file line number Diff line number Diff line change @@ -77,6 +77,24 @@ def rakefile_chains
7777 DEFAULT
7878 end
7979
80+ def rakefile_file_chains
81+ rakefile <<-RAKEFILE
82+ file "fileA" do |t|
83+ sh "echo contentA >\# {t.name}"
84+ end
85+
86+ file "fileB" => "fileA" do |t|
87+ sh "(cat fileA; echo transformationB) >\# {t.name}"
88+ end
89+
90+ file "fileC" => "fileB" do |t|
91+ sh "(cat fileB; echo transformationC) >\# {t.name}"
92+ end
93+
94+ task default: "fileC"
95+ RAKEFILE
96+ end
97+
8098 def rakefile_comments
8199 rakefile <<-COMMENTS
82100# comment for t1
Original file line number Diff line number Diff line change @@ -295,6 +295,26 @@ def test_rules_chaining_to_file_task
295295 "'play.app' file should exist"
296296 end
297297
298+ def dryrun_tasks
299+ @err . split ( "\n " ) . select { |line |
300+ line . match ( /^\* \* Execute/ )
301+ } . map { |line |
302+ line . gsub ( /^\* \* Execute \( dry run\) / , "" )
303+ }
304+ end
305+
306+ def test_update_midway_through_chaining_to_file_task
307+ rakefile_file_chains
308+
309+ rake "-n"
310+ assert_equal ( %w{ fileA fileB fileC default } , dryrun_tasks )
311+ rake
312+ sleep 1 # Ensure the timestamp is on a new second
313+ FileUtils . touch ( "fileA" )
314+ rake "-n"
315+ assert_equal ( %w{ fileB fileC default } , dryrun_tasks )
316+ end
317+
298318 def test_file_creation_task
299319 rakefile_file_creation
300320
You can’t perform that action at this time.
0 commit comments