Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Adds support for def self.setup in isolation tests for setup that sho…

…uld be run only once in the parent
  • Loading branch information...
commit 1d280e21a19aff74e1b35779be2633e6efa511f0 1 parent 940aad2
Yehuda Katz + Carl Lerche authored
View
5 activesupport/lib/active_support/testing/isolation.rb
@@ -21,6 +21,11 @@ def self.forking_env?
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
View
17 activesupport/test/isolation_test.rb
@@ -5,6 +5,12 @@
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 @@ def teardown
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 @@ def assert_erroring(name)
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
View
11 railties/test/initializer/path_test.rb
@@ -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
Please sign in to comment.
Something went wrong with that request. Please try again.