aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test/initializer/test_helper.rb
diff options
context:
space:
mode:
Diffstat (limited to 'railties/test/initializer/test_helper.rb')
-rw-r--r--railties/test/initializer/test_helper.rb48
1 files changed, 36 insertions, 12 deletions
diff --git a/railties/test/initializer/test_helper.rb b/railties/test/initializer/test_helper.rb
index ddb03397ab..9d7dfff1c0 100644
--- a/railties/test/initializer/test_helper.rb
+++ b/railties/test/initializer/test_helper.rb
@@ -1,17 +1,18 @@
-require 'abstract_unit'
-require 'active_support/ruby/shim'
-require 'initializer'
+# This is a test helper file that simulates a rails application being
+# boot from scratch in vendored mode. This file should really only be
+# required in test cases that use the isolation helper so that requires
+# can be reset correctly.
+RAILS_ROOT = File.join(File.dirname(__FILE__), "root")
+RAILS_FRAMEWORK_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..'))
-RAILS_ROOT.replace File.join(File.dirname(__FILE__), "root")
+require "test/unit"
+# We are purposely avoiding adding things to the load path to catch bugs that only happen in the genuine article
+require File.join(RAILS_FRAMEWORK_ROOT, 'activesupport', 'lib', 'active_support', 'testing', 'isolation')
+require File.join(RAILS_FRAMEWORK_ROOT, 'activesupport', 'lib', 'active_support', 'testing', 'declarative')
-module Rails
- class << self
- attr_accessor :vendor_rails
- def vendor_rails?() @vendor_rails end
- end
-end
+class Test::Unit::TestCase
+ extend ActiveSupport::Testing::Declarative
-class ActiveSupport::TestCase
def assert_stderr(match)
$stderr = StringIO.new
yield
@@ -21,4 +22,27 @@ class ActiveSupport::TestCase
ensure
$stderr = STDERR
end
-end \ No newline at end of file
+end
+
+# Fake boot.rb
+module Rails
+ class << self
+ attr_accessor :vendor_rails
+
+ def vendor_rails?
+ @vendor_rails
+ end
+
+ def boot!
+ # Require the initializer
+ require File.join(RAILS_FRAMEWORK_ROOT, 'railties', 'lib', 'initializer')
+ # Run the initializer the same way boot.rb does it
+ Rails::Initializer.run(:install_gem_spec_stubs)
+ Rails::GemDependency.add_frozen_gem_path
+ Rails::Initializer.run(:set_load_path)
+ end
+ end
+end
+
+# All that for this:
+Rails.boot! \ No newline at end of file