aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2015-06-13 11:56:32 +0200
committerYves Senn <yves.senn@gmail.com>2015-06-13 11:58:43 +0200
commit2e5960490936890624cdb2e23c9da4f2b12c4fbf (patch)
tree339c043703c0ddce24136174d7cebeb8ad0caa63
parentc0b4654dbafd662a9967432e188970d404ab381d (diff)
downloadrails-2e5960490936890624cdb2e23c9da4f2b12c4fbf.tar.gz
rails-2e5960490936890624cdb2e23c9da4f2b12c4fbf.tar.bz2
rails-2e5960490936890624cdb2e23c9da4f2b12c4fbf.zip
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 ```
-rw-r--r--railties/CHANGELOG.md4
-rw-r--r--railties/lib/rails/test_unit/reporter.rb6
-rw-r--r--railties/test/test_unit/reporter_test.rb14
-rw-r--r--tools/test.rb2
4 files changed, 25 insertions, 1 deletions
diff --git a/railties/CHANGELOG.md b/railties/CHANGELOG.md
index 3536929d00..ca07ff349c 100644
--- a/railties/CHANGELOG.md
+++ b/railties/CHANGELOG.md
@@ -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,
diff --git a/railties/lib/rails/test_unit/reporter.rb b/railties/lib/rails/test_unit/reporter.rb
index bfdc9754d4..faf551f381 100644
--- a/railties/lib/rails/test_unit/reporter.rb
+++ b/railties/lib/rails/test_unit/reporter.rb
@@ -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
diff --git a/railties/test/test_unit/reporter_test.rb b/railties/test/test_unit/reporter_test.rb
index 77883612f5..d619a3e515 100644
--- a/railties/test/test_unit/reporter_test.rb
+++ b/railties/test/test_unit/reporter_test.rb
@@ -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
diff --git a/tools/test.rb b/tools/test.rb
index 50cce2081a..70f295b554 100644
--- a/tools/test.rb
+++ b/tools/test.rb
@@ -8,3 +8,5 @@ module Rails
@root ||= Pathname.new(COMPONENT_ROOT)
end
end
+
+Rails::TestUnitReporter.executable = "bin/test"