diff options
Diffstat (limited to 'railties/lib')
-rw-r--r-- | railties/lib/rails/test_unit/sub_test_task.rb | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/railties/lib/rails/test_unit/sub_test_task.rb b/railties/lib/rails/test_unit/sub_test_task.rb index ac2bde2071..a463380e2d 100644 --- a/railties/lib/rails/test_unit/sub_test_task.rb +++ b/railties/lib/rails/test_unit/sub_test_task.rb @@ -8,11 +8,21 @@ module Rails end def files - @tasks.find_all { |t| File.file?(t) && !File.directory?(t) } + @tasks.map { |task| + [task, translate(task)].find { |file| test_file?(file) } + }.compact + end + + def translate(file) + if file =~ /^app\/(.*)$/ + "test/#{$1.sub(/\.rb$/, '')}_test.rb" + else + "test/#{file}_test.rb" + end end def tasks - @tasks - files - opt_names + @tasks - test_file_tasks - opt_names end def opts @@ -24,8 +34,18 @@ module Rails private + def test_file_tasks + @tasks.find_all { |task| + [task, translate(task)].any? { |file| test_file?(file) } + } + end + + def test_file?(file) + file =~ /^test/ && File.file?(file) && !File.directory?(file) + end + def opt_names - (@tasks - files).reject { |t| task_defined? t } + (@tasks - test_file_tasks).reject { |t| task_defined? t } end def task_defined?(task) |