diff options
author | Arthur Neves <arthurnn@gmail.com> | 2015-01-23 16:05:31 -0500 |
---|---|---|
committer | Yves Senn <yves.senn@gmail.com> | 2015-03-18 09:52:16 +0100 |
commit | ff0a7611cf912ce7ae32966cc42da5dbdff3a0bc (patch) | |
tree | e24e2b7786c251e89a15bedc5d918a2ca123fa9f /railties/lib/rails/test_unit/runner.rb | |
parent | c5532e06d9ef8b75f7443019aa1f34a3b697efdc (diff) | |
download | rails-ff0a7611cf912ce7ae32966cc42da5dbdff3a0bc.tar.gz rails-ff0a7611cf912ce7ae32966cc42da5dbdff3a0bc.tar.bz2 rails-ff0a7611cf912ce7ae32966cc42da5dbdff3a0bc.zip |
Add test run by line, and report error by line
Diffstat (limited to 'railties/lib/rails/test_unit/runner.rb')
-rw-r--r-- | railties/lib/rails/test_unit/runner.rb | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/railties/lib/rails/test_unit/runner.rb b/railties/lib/rails/test_unit/runner.rb index 25f30f6b80..6f9fdab68a 100644 --- a/railties/lib/rails/test_unit/runner.rb +++ b/railties/lib/rails/test_unit/runner.rb @@ -1,6 +1,7 @@ require "ostruct" require "optparse" require "rake/file_list" +require "method_source" module Rails class TestRunner @@ -53,6 +54,14 @@ module Rails run_tests end + def find_method + return if @line.blank? + method = test_methods.find do |test_method, start_line, end_line| + (start_line..end_line).include?(@line.to_i) + end + method.first if method + end + private def run_tests test_files.to_a.each do |file| @@ -66,6 +75,10 @@ module Rails def test_files if @options[:pattern] pattern = NAMED_PATTERNS[@options[:pattern]] + unless pattern + filename, @line = @options[:pattern].split(':') + return [filename] if filename + end else pattern = "test/**/*_test.rb" end @@ -79,5 +92,19 @@ module Rails def filter_tests_by_name ARGV.push("-n", @options[:name]) end + + def test_methods + methods_map = [] + suites = Minitest::Runnable.runnables.shuffle + suites.each do |suite_class| + suite_class.runnable_methods.each do |test_method| + method = suite_class.instance_method(test_method) + start_line = method.source_location.last + end_line = method.source.split("\n").size + start_line - 1 + methods_map << [test_method, start_line, end_line] + end + end + methods_map + end end end |