From e9dd241c53044859be4770da58880b22725574b6 Mon Sep 17 00:00:00 2001 From: Sandy Vanderbleek Date: Wed, 2 Apr 2014 12:55:00 -0700 Subject: [PATCH] Lookup prerequisites with same name outside of scope instead of matching self --- lib/rake/task.rb | 6 +++++- test/test_rake_task.rb | 30 ++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/lib/rake/task.rb b/lib/rake/task.rb index 9bcf72552..50a7df6f0 100644 --- a/lib/rake/task.rb +++ b/lib/rake/task.rb @@ -54,7 +54,11 @@ def prerequisite_tasks end def lookup_prerequisite(prerequisite_name) # :nodoc: - application[prerequisite_name, @scope] + scoped_prerequisite_task = application[prerequisite_name, @scope] + if scoped_prerequisite_task == self + unscoped_prerequisite_task = application[prerequisite_name] + end + unscoped_prerequisite_task || scoped_prerequisite_task end private :lookup_prerequisite diff --git a/test/test_rake_task.rb b/test/test_rake_task.rb index 0416dfa8d..c93114f94 100644 --- a/test/test_rake_task.rb +++ b/test/test_rake_task.rb @@ -211,6 +211,7 @@ def test_prerequisite_tasks_fails_if_prerequisites_are_undefined end def test_prerequisite_tasks_honors_namespaces + task :b a = b = nil namespace "X" do a = task :a => ["b", "c"] @@ -221,6 +222,35 @@ def test_prerequisite_tasks_honors_namespaces assert_equal [b, c], a.prerequisite_tasks end + def test_prerequisite_tasks_finds_tasks_with_same_name_outside_namespace + b1 = nil + namespace "a" do + b1 = task :b => "b" + end + b2 = task :b + + assert_equal [b2], b1.prerequisite_tasks + end + + def test_prerequisite_tasks_in_nested_namespaces + m = task :m + a_c_m = a_b_m = a_m = nil + namespace "a" do + a_m = task :m + + namespace "b" do + a_b_m = task :m => "m" + end + + namespace "c" do + a_c_m = task :m => "a:m" + end + end + + assert_equal [m], a_b_m.prerequisite_tasks + assert_equal [a_m], a_c_m.prerequisite_tasks + end + def test_all_prerequisite_tasks_includes_all_prerequisites a = task :a => "b" b = task :b => ["c", "d"]