Permalink
Browse files

Prefer Minitest's location for test failures.

When running tests, the Rails test runner would report the start of the test method as the test failure.

For this test:

```ruby
1 require 'test_helper
2
3 class BunnyTest < ActiveSupport::TestCase
4   test "something failing" do
5     assert false, 'This failed'
6   end
7 end
```

The runner outputs 5 instead of 4:

```
............................................F

This failed

bin/rails test test/models/bunny_test.rb:5

........
```
  • Loading branch information...
kaspth committed Nov 12, 2015
1 parent 49eefe1 commit 0db310586ac3e15be95d2ef27ff40cfa24c05c10
Showing with 9 additions and 3 deletions.
  1. +8 −2 railties/lib/rails/test_unit/reporter.rb
  2. +1 −1 railties/test/application/test_runner_test.rb
@@ -57,8 +57,14 @@ def fail_fast?
end
def format_rerun_snippet(result)
location, line = result.method(result.name).source_location
"#{self.executable} #{relative_path_for(location)}:#{line}"
# Try to extract path to assertion from backtrace.
if result.location =~ /\[(.*)\]\z/
assertion_path = $1
else
assertion_path = result.method(result.name).source_location.join(':')
end
"#{self.executable} #{relative_path_for(assertion_path)}"
end
end
end
@@ -344,7 +344,7 @@ def test_output_inline_by_default
create_test_file :models, 'post', pass: false
output = run_test_command('test/models/post_test.rb')
assert_match %r{Running:\n\nPostTest\nF\n\nwups!\n\nbin/rails test test/models/post_test.rb:4}, output
assert_match %r{Running:\n\nPostTest\nF\n\nwups!\n\nbin/rails test test/models/post_test.rb:6}, output
end
def test_only_inline_failure_output

0 comments on commit 0db3105

Please sign in to comment.