mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
41bfedeac2
Work around mongrel swallowing LoadErrors to ensure that users get more helpful errors if active_resource is required but not missing. [mislav] Closes #9743 git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7738 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
137 lines
3.8 KiB
Ruby
137 lines
3.8 KiB
Ruby
require "#{File.dirname(__FILE__)}/abstract_unit"
|
|
require 'initializer'
|
|
|
|
class ConfigurationMock < Rails::Configuration
|
|
attr_reader :environment_path
|
|
|
|
def initialize(envpath)
|
|
super()
|
|
@environment_path = envpath
|
|
end
|
|
end
|
|
|
|
class Initializer_load_environment_Test < Test::Unit::TestCase
|
|
|
|
def test_load_environment_with_constant
|
|
config = ConfigurationMock.new("#{File.dirname(__FILE__)}/fixtures/environment_with_constant.rb")
|
|
assert_nil $initialize_test_set_from_env
|
|
Rails::Initializer.run(:load_environment, config)
|
|
assert_equal "success", $initialize_test_set_from_env
|
|
ensure
|
|
$initialize_test_set_from_env = nil
|
|
end
|
|
|
|
end
|
|
|
|
class Initializer_after_initialize_with_blocks_environment_Test < Test::Unit::TestCase
|
|
def setup
|
|
config = ConfigurationMock.new("")
|
|
config.after_initialize do
|
|
$test_after_initialize_block1 = "success"
|
|
end
|
|
config.after_initialize do
|
|
$test_after_initialize_block2 = "congratulations"
|
|
end
|
|
assert_nil $test_after_initialize_block1
|
|
assert_nil $test_after_initialize_block2
|
|
|
|
Rails::Initializer.run(:after_initialize, config)
|
|
end
|
|
|
|
def teardown
|
|
$test_after_initialize_block1 = nil
|
|
$test_after_initialize_block2 = nil
|
|
end
|
|
|
|
def test_should_have_called_the_first_after_initialize_block
|
|
assert_equal "success", $test_after_initialize_block1
|
|
end
|
|
|
|
def test_should_have_called_the_second_after_initialize_block
|
|
assert_equal "congratulations", $test_after_initialize_block2
|
|
end
|
|
end
|
|
|
|
class Initializer_after_initialize_with_no_block_environment_Test < Test::Unit::TestCase
|
|
|
|
def setup
|
|
config = ConfigurationMock.new("")
|
|
config.after_initialize do
|
|
$test_after_initialize_block1 = "success"
|
|
end
|
|
config.after_initialize # don't pass a block, this is what we're testing!
|
|
config.after_initialize do
|
|
$test_after_initialize_block2 = "congratulations"
|
|
end
|
|
assert_nil $test_after_initialize_block1
|
|
|
|
Rails::Initializer.run(:after_initialize, config)
|
|
end
|
|
|
|
def teardown
|
|
$test_after_initialize_block1 = nil
|
|
$test_after_initialize_block2 = nil
|
|
end
|
|
|
|
def test_should_have_called_the_first_after_initialize_block
|
|
assert_equal "success", $test_after_initialize_block1, "should still get set"
|
|
end
|
|
|
|
def test_should_have_called_the_second_after_initialize_block
|
|
assert_equal "congratulations", $test_after_initialize_block2
|
|
end
|
|
|
|
end
|
|
|
|
uses_mocha 'framework paths' do
|
|
class ConfigurationFrameworkPathsTests < Test::Unit::TestCase
|
|
def setup
|
|
@config = Rails::Configuration.new
|
|
@config.frameworks.clear
|
|
|
|
File.stubs(:directory?).returns(true)
|
|
@config.stubs(:framework_root_path).returns('')
|
|
end
|
|
|
|
def test_minimal
|
|
expected = %w(
|
|
/railties
|
|
/railties/lib
|
|
/activesupport/lib
|
|
)
|
|
assert_equal expected, @config.framework_paths
|
|
end
|
|
|
|
def test_actioncontroller_or_actionview_add_actionpack
|
|
@config.frameworks << :action_controller
|
|
assert_framework_path '/actionpack/lib'
|
|
|
|
@config.frameworks = [:action_view]
|
|
assert_framework_path '/actionpack/lib'
|
|
end
|
|
|
|
def test_paths_for_ar_ares_and_mailer
|
|
[:active_record, :action_mailer, :active_resource, :action_web_service].each do |framework|
|
|
@config.frameworks = [framework]
|
|
assert_framework_path "/#{framework.to_s.gsub('_', '')}/lib"
|
|
end
|
|
end
|
|
|
|
def test_unknown_framework_raises_error
|
|
@config.frameworks << :action_foo
|
|
initializer = Rails::Initializer.new @config
|
|
initializer.expects(:require).raises(LoadError)
|
|
|
|
assert_raise RuntimeError do
|
|
initializer.send :require_frameworks
|
|
end
|
|
end
|
|
|
|
protected
|
|
|
|
def assert_framework_path(path)
|
|
assert @config.framework_paths.include?(path),
|
|
"<#{path.inspect}> not found among <#{@config.framework_paths.inspect}>"
|
|
end
|
|
end
|
|
end
|