make it possible to customize the executable inside rereun snippets.

In the Rails repository we use a `bin/test` executable to run our tests.
However the rerun snippets still included `bin/rails test`:

BEFORE:
```
Failed tests:

bin/rails test test/cases/adapters/postgresql/schema_test.rb:91
```

AFTER:
```
Failed tests:

bin/test test/cases/adapters/postgresql/schema_test.rb:91
```
This commit is contained in:
Yves Senn 2015-06-13 11:56:32 +02:00
parent c0b4654dba
commit 2e59604909
4 changed files with 25 additions and 1 deletions

View File

@ -1,3 +1,7 @@
* Make it possible to customize the executable inside rerun snippets.
*Yves Senn*
* Add support for API only apps.
Middleware stack was slimmed down and it has only the needed
middleware for API apps & generators generates the right files,

View File

@ -1,7 +1,11 @@
require "active_support/core_ext/class/attribute"
require "minitest"
module Rails
class TestUnitReporter < Minitest::StatisticsReporter
class_attribute :executable
self.executable = "bin/rails test"
def report
return if results.empty?
io.puts
@ -15,7 +19,7 @@ module Rails
filtered_results.reject!(&:skipped?) unless options[:verbose]
filtered_results.map do |result|
location, line = result.method(result.name).source_location
"bin/rails test #{relative_path_for(location)}:#{line}"
"#{self.executable} #{relative_path_for(location)}:#{line}"
end.join "\n"
end

View File

@ -43,6 +43,20 @@ class TestUnitReporterTest < ActiveSupport::TestCase
assert_rerun_snippet_count 1
end
test "allows to customize the executable in the rerun snippet" do
original_executable = Rails::TestUnitReporter.executable
begin
Rails::TestUnitReporter.executable = "bin/test"
verbose = Rails::TestUnitReporter.new @output, verbose: true
@reporter.record(failed_test)
@reporter.report
assert_match %r{^bin/test .*test/test_unit/reporter_test.rb:6$}, @output.string
ensure
Rails::TestUnitReporter.executable = original_executable
end
end
private
def assert_rerun_snippet_count(snippet_count)
assert_equal snippet_count, @output.string.scan(%r{^bin/rails test }).size

View File

@ -8,3 +8,5 @@ module Rails
@root ||= Pathname.new(COMPONENT_ROOT)
end
end
Rails::TestUnitReporter.executable = "bin/test"