aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails
diff options
context:
space:
mode:
Diffstat (limited to 'railties/lib/rails')
-rw-r--r--railties/lib/rails/test_unit/sub_test_task.rb26
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)