提交 84eac5da 编写于 作者: Y Yves Senn

BACKTRACE environment variable to show unfiltered backtraces.

We used to support the `BACKTRACE` environment variable but when
we switched to MiniTest it got removed: f9382cd7

This commit adds back the functionality to show the unfiltered backtrace when needed.
This also works when you run your tests with `rake`:

* `BACKTRACE=1 bin/rake test`
* `BACKTRACE=1 ruby -Itest ...`
上级 876fd5a5
* `BACKTRACE` environment variable to show unfiltered backtraces for
test failures.
Example:
`BACKTRACE=1 ruby -Itest ...`
# or with rake
`BAKCTRACE=1 bin/rake`
*Yves Senn*
* Removal of all javascript stuff (gems and files) when generating a new
application using the `--skip-javascript` option.
......
......@@ -10,7 +10,9 @@
# Config Rails backtrace in tests.
require 'rails/backtrace_cleaner'
MiniTest.backtrace_filter = Rails.backtrace_cleaner
if ENV["BACKTRACE"].nil?
MiniTest.backtrace_filter = Rails.backtrace_cleaner
end
if defined?(ActiveRecord::Base)
class ActiveSupport::TestCase
......
......@@ -24,7 +24,7 @@ def test_truth
end
RUBY
run_test_file 'unit/foo_test.rb'
assert_successful_test_run 'unit/foo_test.rb'
end
test "integration test" do
......@@ -49,19 +49,48 @@ def test_index
end
RUBY
run_test_file 'integration/posts_test.rb'
assert_successful_test_run 'integration/posts_test.rb'
end
test "enable full backtraces on test failures" do
app_file 'test/unit/failing_test.rb', <<-RUBY
require 'test_helper'
class FailingTest < ActiveSupport::TestCase
def test_failure
raise "fail"
end
end
RUBY
output = run_test_file('unit/failing_test.rb', env: { "BACKTRACE" => "1" })
assert_match %r{/app/test/unit/failing_test\.rb}, output
end
private
def run_test_file(name)
result = ruby '-Itest', "#{app_path}/test/#{name}"
def assert_successful_test_run(name)
result = run_test_file(name)
assert_equal 0, $?.to_i, result
end
def run_test_file(name, options = {})
ruby '-Itest', "#{app_path}/test/#{name}", options
end
def ruby(*args)
options = args.extract_options!
env = options.fetch(:env, {})
env["RUBYLIB"] = $:.join(':')
Dir.chdir(app_path) do
`RUBYLIB='#{$:.join(':')}' #{Gem.ruby} #{args.join(' ')}`
`#{env_string(env)} #{Gem.ruby} #{args.join(' ')}`
end
end
def env_string(variables)
variables.map do |key, value|
"#{key}='#{value}'"
end.join " "
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册