From 61604feec0fa04810f5903d13b74bad06e67b3bb Mon Sep 17 00:00:00 2001 From: Yehuda Katz + Carl Lerche Date: Mon, 6 Jul 2009 12:25:34 -0700 Subject: Get Initializer tests running without requiring parts of Rails being loaded first --- railties/test/initializer/test_helper.rb | 48 ++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 12 deletions(-) (limited to 'railties/test/initializer/test_helper.rb') 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 -- cgit v1.2.3