mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Adds support for def self.setup in isolation tests for setup that should be run only once in the parent
This commit is contained in:
@@ -21,6 +21,11 @@ module ActiveSupport::Testing
|
||||
end
|
||||
|
||||
def run(result)
|
||||
unless defined?(@@ran_class_setup)
|
||||
self.class.setup
|
||||
@@ran_class_setup = true
|
||||
end
|
||||
|
||||
yield(Test::Unit::TestCase::STARTED, name)
|
||||
|
||||
@_result = result
|
||||
|
||||
@@ -5,6 +5,12 @@ if ENV['CHILD']
|
||||
class ChildIsolationTest < ActiveSupport::TestCase
|
||||
include ActiveSupport::Testing::Isolation
|
||||
|
||||
def self.setup
|
||||
File.open(File.join(File.dirname(__FILE__), "fixtures", "isolation_test"), "a") do |f|
|
||||
f.puts "hello"
|
||||
end
|
||||
end
|
||||
|
||||
def setup
|
||||
@instance = "HELLO"
|
||||
end
|
||||
@@ -64,6 +70,8 @@ if ENV['CHILD']
|
||||
else
|
||||
class ParentIsolationTest < ActiveSupport::TestCase
|
||||
|
||||
File.open(File.join(File.dirname(__FILE__), "fixtures", "isolation_test"), "w") {}
|
||||
|
||||
ENV["CHILD"] = "1"
|
||||
OUTPUT = `#{Gem.ruby} -I#{File.dirname(__FILE__)} #{File.expand_path(__FILE__)} -v`
|
||||
ENV.delete("CHILD")
|
||||
@@ -131,12 +139,17 @@ else
|
||||
|
||||
test "backtrace is printed for errors" do
|
||||
assert_equal 'Error', @backtraces["test_captures_errors"][:type]
|
||||
assert_match %{isolation_test.rb:21:in `test_captures_errors'}, @backtraces["test_captures_errors"][:output]
|
||||
assert_match %r{isolation_test.rb:\d+:in `test_captures_errors'}, @backtraces["test_captures_errors"][:output]
|
||||
end
|
||||
|
||||
test "backtrace is printed for failures" do
|
||||
assert_equal 'Failure', @backtraces["test_captures_failures"][:type]
|
||||
assert_match %{isolation_test.rb:25:in `test_captures_failures'}, @backtraces["test_captures_failures"][:output]
|
||||
assert_match %r{isolation_test.rb:\d+:in `test_captures_failures'}, @backtraces["test_captures_failures"][:output]
|
||||
end
|
||||
|
||||
test "self.setup is run only once" do
|
||||
text = File.read(File.join(File.dirname(__FILE__), "fixtures", "isolation_test"))
|
||||
assert_equal "hello\n", text
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -8,14 +8,15 @@ module Rails
|
||||
def self.vendor_rails? ; false ; end
|
||||
end
|
||||
|
||||
# TODO: Can this be reset?
|
||||
Rails::Initializer.run do |config|
|
||||
config.frameworks = [:action_controller, :action_view, :action_mailer, :active_record]
|
||||
end
|
||||
|
||||
class PathsTest < ActiveSupport::TestCase
|
||||
include ActiveSupport::Testing::Isolation
|
||||
|
||||
def self.setup
|
||||
Rails::Initializer.run do |config|
|
||||
config.frameworks = [:action_controller, :action_view, :action_mailer, :active_record]
|
||||
end
|
||||
end
|
||||
|
||||
def setup
|
||||
@paths = Rails::Initializer.default.config.paths
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user