aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2009-11-02 23:46:00 -0200
committerJosé Valim <jose.valim@gmail.com>2009-11-02 23:46:00 -0200
commitd002826e54415a340e55fdbf363d005faebf8fc5 (patch)
tree431146dfb0b15c4507fd49bb7d6f18bd40ccf839 /railties/test
parent9ba83cce0318fa5051764f4a16c286adf30169e2 (diff)
parent14370e1aab6ddfb5b86cf50bd7e5abcebae0684c (diff)
downloadrails-d002826e54415a340e55fdbf363d005faebf8fc5.tar.gz
rails-d002826e54415a340e55fdbf363d005faebf8fc5.tar.bz2
rails-d002826e54415a340e55fdbf363d005faebf8fc5.zip
Merge branch 'master' of git://github.com/rails/rails
Diffstat (limited to 'railties/test')
-rw-r--r--railties/test/abstract_unit.rb27
-rw-r--r--railties/test/application/configuration_test.rb9
-rw-r--r--railties/test/application/generators_test.rb7
-rw-r--r--railties/test/application/initializer_test.rb82
-rw-r--r--railties/test/application/load_test.rb2
-rw-r--r--railties/test/application/notifications_test.rb46
-rw-r--r--railties/test/application/plugins_test.rb31
-rw-r--r--railties/test/backtrace_cleaner_test.rb39
-rw-r--r--railties/test/boot_test.rb172
-rw-r--r--railties/test/gem_dependency_test.rb220
-rw-r--r--railties/test/generators/actions_test.rb2
-rw-r--r--railties/test/generators/app_generator_test.rb11
-rw-r--r--railties/test/generators/generators_test_helper.rb20
-rw-r--r--railties/test/generators/scaffold_controller_generator_test.rb41
-rw-r--r--railties/test/generators_test.rb9
-rw-r--r--railties/test/initializable_test.rb95
-rw-r--r--railties/test/initializer/check_ruby_version_test.rb5
-rw-r--r--railties/test/initializer/initialize_i18n_test.rb11
-rw-r--r--railties/test/initializer/path_test.rb4
-rw-r--r--railties/test/initializer_test.rb20
-rw-r--r--railties/test/isolation/abstract_unit.rb41
-rw-r--r--railties/test/plugins/vendored_test.rb19
-rw-r--r--railties/test/rails_info_controller_test.rb12
23 files changed, 354 insertions, 571 deletions
diff --git a/railties/test/abstract_unit.rb b/railties/test/abstract_unit.rb
index 551468b3e8..47013d7797 100644
--- a/railties/test/abstract_unit.rb
+++ b/railties/test/abstract_unit.rb
@@ -1,28 +1,27 @@
ORIG_ARGV = ARGV.dup
-require 'rubygems'
-gem 'rack', '~> 1.0.0'
-gem 'rack-test', '~> 0.5.0'
+root = File.expand_path('../../..', __FILE__)
+begin
+ require "#{root}/vendor/gems/environment"
+rescue LoadError
+ %w(activesupport activemodel activerecord actionpack actionmailer activeresource railties).each do |lib|
+ $:.unshift "#{root}/#{lib}/lib"
+ end
+end
-$:.unshift File.dirname(__FILE__) + "/../../activesupport/lib"
-$:.unshift File.dirname(__FILE__) + "/../../activerecord/lib"
-$:.unshift File.dirname(__FILE__) + "/../../actionpack/lib"
-$:.unshift File.dirname(__FILE__) + "/../../actionmailer/lib"
-$:.unshift File.dirname(__FILE__) + "/../../activeresource/lib"
-$:.unshift File.dirname(__FILE__) + "/../lib"
-$:.unshift File.dirname(__FILE__) + "/../builtin/rails_info"
+$:.unshift "#{root}/railties/builtin/rails_info"
require 'stringio'
require 'test/unit'
+require 'fileutils'
require 'active_support'
require 'active_support/core_ext/logger'
require 'active_support/test_case'
require 'action_controller'
+require 'rails'
-if defined?(RAILS_ROOT)
- RAILS_ROOT.replace File.dirname(__FILE__)
-else
- RAILS_ROOT = File.dirname(__FILE__)
+Rails::Initializer.run do |config|
+ config.root = File.dirname(__FILE__)
end
diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb
index d90582d3db..a3e1916494 100644
--- a/railties/test/application/configuration_test.rb
+++ b/railties/test/application/configuration_test.rb
@@ -7,12 +7,11 @@ module ApplicationTests
def setup
build_app
boot_rails
- Object.send(:remove_const, :RAILS_ROOT)
end
test "the application root is set correctly" do
require "#{app_path}/config/environment"
- assert_equal app_path, Rails.application.root
+ assert_equal Pathname.new(app_path), Rails.application.root
end
test "the application root can be set" do
@@ -22,7 +21,7 @@ module ApplicationTests
config.root = '#{app_path}/hello'
RUBY
require "#{app_path}/config/environment"
- assert_equal "#{app_path}/hello", Rails.application.root
+ assert_equal Pathname.new("#{app_path}/hello"), Rails.application.root
end
test "the application root is detected as where config.ru is located" do
@@ -31,7 +30,7 @@ module ApplicationTests
RUBY
FileUtils.mv "#{app_path}/config.ru", "#{app_path}/config/config.ru"
require "#{app_path}/config/environment"
- assert_equal "#{app_path}/config", Rails.application.root
+ assert_equal Pathname.new("#{app_path}/config"), Rails.application.root
end
test "the application root is Dir.pwd if there is no config.ru" do
@@ -42,7 +41,7 @@ module ApplicationTests
Dir.chdir("#{app_path}/app") do
require "#{app_path}/config/environment"
- assert_equal "#{app_path}/app", Rails.application.root
+ assert_equal Pathname.new("#{app_path}/app"), Rails.application.root
end
end
end
diff --git a/railties/test/application/generators_test.rb b/railties/test/application/generators_test.rb
index c664b61137..445a867c85 100644
--- a/railties/test/application/generators_test.rb
+++ b/railties/test/application/generators_test.rb
@@ -7,6 +7,7 @@ module ApplicationTests
def setup
build_app
boot_rails
+ require "rails"
require "rails/generators"
end
@@ -37,12 +38,13 @@ module ApplicationTests
test "generators aliases and options on initialization" do
Rails::Initializer.run do |c|
+ c.frameworks = []
c.generators.rails :aliases => { :test_framework => "-w" }
c.generators.orm :datamapper
c.generators.test_framework :rspec
end
# Initialize the application
- Rails.application.new
+ Rails.initialize!
assert_equal :rspec, Rails::Generators.options[:rails][:test_framework]
assert_equal "-w", Rails::Generators.aliases[:rails][:test_framework]
@@ -50,10 +52,11 @@ module ApplicationTests
test "generators no color on initialization" do
Rails::Initializer.run do |c|
+ c.frameworks = []
c.generators.colorize_logging = false
end
# Initialize the application
- Rails.application.new
+ Rails.initialize!
assert_equal Thor::Base.shell, Thor::Shell::Basic
end
diff --git a/railties/test/application/initializer_test.rb b/railties/test/application/initializer_test.rb
index 76486d8f2c..719520bf68 100644
--- a/railties/test/application/initializer_test.rb
+++ b/railties/test/application/initializer_test.rb
@@ -7,36 +7,42 @@ module ApplicationTests
def setup
build_app
boot_rails
+ require "rails"
end
test "initializing an application initializes rails" do
- class MyApp < Rails::Application ; end
+ Rails::Initializer.run do |config|
+ config.root = app_path
+ end
if RUBY_VERSION < '1.9'
$KCODE = ''
- MyApp.new
+ Rails.initialize!
assert_equal 'UTF8', $KCODE
else
Encoding.default_external = Encoding::US_ASCII
- MyApp.new
+ Rails.initialize!
assert_equal Encoding::UTF_8, Encoding.default_external
end
end
test "initializing an application adds the application paths to the load path" do
- class MyApp < Rails::Application ; end
+ Rails::Initializer.run do |config|
+ config.root = app_path
+ end
- MyApp.new
+ Rails.initialize!
assert $:.include?("#{app_path}/app/models")
end
test "adding an unknown framework raises an error" do
- class MyApp < Rails::Application
+ Rails::Initializer.run do |config|
+ config.root = app_path
config.frameworks << :action_foo
end
assert_raises RuntimeError do
- MyApp.new
+ Rails.initialize!
end
end
@@ -49,10 +55,11 @@ module ApplicationTests
ZOO
Rails::Initializer.run do |config|
+ config.root = app_path
config.eager_load_paths = "#{app_path}/lib"
end
- Rails.application.new
+ Rails.initialize!
assert Zoo
end
@@ -60,44 +67,28 @@ module ApplicationTests
test "load environment with global" do
app_file "config/environments/development.rb", "$initialize_test_set_from_env = 'success'"
assert_nil $initialize_test_set_from_env
- Rails::Initializer.run { }
- Rails.application.new
+ Rails::Initializer.run { |config| config.root = app_path }
+ Rails.initialize!
assert_equal "success", $initialize_test_set_from_env
end
test "action_controller load paths set only if action controller in use" do
assert_nothing_raised NameError do
Rails::Initializer.run do |config|
+ config.root = app_path
config.frameworks = []
end
- Rails.application.new
+ Rails.initialize!
end
end
- test "action_pack is added to the load path if action_controller is required" do
- Rails::Initializer.run do |config|
- config.frameworks = [:action_controller]
- end
- Rails.application.new
-
- assert $:.include?("#{framework_path}/actionpack/lib")
- end
-
- test "action_pack is added to the load path if action_view is required" do
- Rails::Initializer.run do |config|
- config.frameworks = [:action_view]
- end
- Rails.application.new
-
- assert $:.include?("#{framework_path}/actionpack/lib")
- end
-
test "after_initialize block works correctly" do
Rails::Initializer.run do |config|
+ config.root = app_path
config.after_initialize { $test_after_initialize_block1 = "success" }
config.after_initialize { $test_after_initialize_block2 = "congratulations" }
end
- Rails.application.new
+ Rails.initialize!
assert_equal "success", $test_after_initialize_block1
assert_equal "congratulations", $test_after_initialize_block2
@@ -105,11 +96,12 @@ module ApplicationTests
test "after_initialize block works correctly when no block is passed" do
Rails::Initializer.run do |config|
+ config.root = app_path
config.after_initialize { $test_after_initialize_block1 = "success" }
config.after_initialize # don't pass a block, this is what we're testing!
config.after_initialize { $test_after_initialize_block2 = "congratulations" }
end
- Rails.application.new
+ Rails.initialize!
assert_equal "success", $test_after_initialize_block1
assert_equal "congratulations", $test_after_initialize_block2
@@ -118,9 +110,10 @@ module ApplicationTests
# i18n
test "setting another default locale" do
Rails::Initializer.run do |config|
+ config.root = app_path
config.i18n.default_locale = :de
end
- Rails.application.new
+ Rails.initialize!
assert_equal :de, I18n.default_locale
end
@@ -128,18 +121,21 @@ module ApplicationTests
test "no config locales dir present should return empty load path" do
FileUtils.rm_rf "#{app_path}/config/locales"
Rails::Initializer.run do |c|
+ c.root = app_path
assert_equal [], c.i18n.load_path
end
end
test "config locales dir present should be added to load path" do
Rails::Initializer.run do |c|
+ c.root = app_path
assert_equal ["#{app_path}/config/locales/en.yml"], c.i18n.load_path
end
end
test "config defaults should be added with config settings" do
Rails::Initializer.run do |c|
+ c.root = app_path
c.i18n.load_path << "my/other/locale.yml"
end
@@ -151,15 +147,17 @@ module ApplicationTests
# DB middleware
test "database middleware doesn't initialize when session store is not active_record" do
Rails::Initializer.run do |config|
+ config.root = app_path
config.action_controller.session_store = :cookie_store
end
- Rails.application.new
+ Rails.initialize!
assert !Rails.application.config.middleware.include?(ActiveRecord::SessionStore)
end
test "database middleware doesn't initialize when activerecord is not in frameworks" do
Rails::Initializer.run do |c|
+ c.root = app_path
c.frameworks = []
end
assert_equal [], Rails.application.config.middleware
@@ -167,9 +165,10 @@ module ApplicationTests
test "database middleware initializes when session store is active record" do
Rails::Initializer.run do |c|
+ c.root = app_path
c.action_controller.session_store = :active_record_store
end
- Rails.application.new
+ Rails.initialize!
expects = [ActiveRecord::ConnectionAdapters::ConnectionManagement, ActiveRecord::QueryCache, ActiveRecord::SessionStore]
middleware = Rails.application.config.middleware.map { |m| m.klass }
@@ -178,10 +177,11 @@ module ApplicationTests
test "ensure database middleware doesn't use action_controller on initializing" do
Rails::Initializer.run do |c|
+ c.root = app_path
c.frameworks -= [:action_controller]
c.action_controller.session_store = :active_record_store
end
- Rails.application.new
+ Rails.initialize!
assert !Rails.application.config.middleware.include?(ActiveRecord::SessionStore)
end
@@ -189,20 +189,20 @@ module ApplicationTests
# Pathview test
test "load view paths doesn't perform anything when action_view not in frameworks" do
Rails::Initializer.run do |c|
+ c.root = app_path
c.frameworks -= [:action_view]
end
- Rails.application.new
+ Rails.initialize!
assert_equal nil, ActionMailer::Base.template_root
assert_equal [], ActionController::Base.view_paths
end
- # Rails root test
- test "Rails.root == RAILS_ROOT" do
- assert_equal RAILS_ROOT, Rails.root.to_s
- end
-
test "Rails.root should be a Pathname" do
+ Rails::Initializer.run do |c|
+ c.root = app_path
+ end
+ Rails.initialize!
assert_instance_of Pathname, Rails.root
end
end
diff --git a/railties/test/application/load_test.rb b/railties/test/application/load_test.rb
index 5c3d35fb16..3da51c4355 100644
--- a/railties/test/application/load_test.rb
+++ b/railties/test/application/load_test.rb
@@ -40,7 +40,7 @@ module ApplicationTests
test "Rails.application is available after config.ru has been racked up" do
rackup
- assert Rails.application.new < Rails::Application
+ assert Rails.application < Rails::Application
end
# Passenger still uses AC::Dispatcher, so we need to
diff --git a/railties/test/application/notifications_test.rb b/railties/test/application/notifications_test.rb
new file mode 100644
index 0000000000..62ed4f4ad4
--- /dev/null
+++ b/railties/test/application/notifications_test.rb
@@ -0,0 +1,46 @@
+require "isolation/abstract_unit"
+
+module ApplicationTests
+ class NotificationsTest < Test::Unit::TestCase
+ include ActiveSupport::Testing::Isolation
+
+ class MyQueue
+ attr_reader :events, :subscribers
+
+ def initialize
+ @events = []
+ @subscribers = []
+ end
+
+ def publish(name, *args)
+ @events << name
+ end
+
+ def subscribe(pattern=nil, &block)
+ @subscribers << pattern
+ end
+ end
+
+ def setup
+ build_app
+ boot_rails
+ require "rails"
+ require "active_support/notifications"
+ Rails::Initializer.run do |c|
+ c.notifications.queue = MyQueue.new
+ c.notifications.subscribe(/listening/) do
+ puts "Cool"
+ end
+ end
+ end
+
+ test "new queue is set" do
+ ActiveSupport::Notifications.instrument(:foo)
+ assert_equal :foo, ActiveSupport::Notifications.queue.events.first
+ end
+
+ test "configuration subscribers are loaded" do
+ assert_equal 1, ActiveSupport::Notifications.queue.subscribers.count { |s| s == /listening/ }
+ end
+ end
+end
diff --git a/railties/test/application/plugins_test.rb b/railties/test/application/plugins_test.rb
index a4cf322139..80a19856d7 100644
--- a/railties/test/application/plugins_test.rb
+++ b/railties/test/application/plugins_test.rb
@@ -11,63 +11,68 @@ module ApplicationTests
def setup
build_app
boot_rails
+ require "rails"
@failure_tip = "It's likely someone has added a new plugin fixture without updating this list"
# Tmp hax to get tests working
FileUtils.cp_r "#{File.dirname(__FILE__)}/../fixtures/plugins", "#{app_path}/vendor"
end
test "all plugins are loaded when registered plugin list is untouched" do
- Rails::Initializer.run { }
- Rails.application.new
+ Rails::Initializer.run { |c| c.root = app_path }
+ Rails.initialize!
assert_plugins [
:a, :acts_as_chunky_bacon, :engine, :gemlike, :plugin_with_no_lib_dir, :stubby
], Rails.application.config.loaded_plugins, @failure_tip
end
test "no plugins are loaded if the configuration has an empty plugin list" do
- Rails::Initializer.run { |c| c.plugins = [] }
+ Rails::Initializer.run { |c| c.root = app_path; c.plugins = [] }
assert_plugins [], Rails.application.config.loaded_plugins
end
test "only the specified plugins are located in the order listed" do
plugin_names = [:plugin_with_no_lib_dir, :acts_as_chunky_bacon]
- Rails::Initializer.run { |c| c.plugins = plugin_names }
- Rails.application.new
+ Rails::Initializer.run { |c| c.root = app_path; c.plugins = plugin_names }
+ Rails.initialize!
assert_plugins plugin_names, Rails.application.config.loaded_plugins
end
test "all plugins loaded after all" do
Rails::Initializer.run do |config|
+ config.root = app_path
config.plugins = [:stubby, :all, :acts_as_chunky_bacon]
end
- Rails.application.new
+ Rails.initialize!
assert_plugins [:stubby, :a, :engine, :gemlike, :plugin_with_no_lib_dir, :acts_as_chunky_bacon], Rails.application.config.loaded_plugins, @failure_tip
end
test "plugin names may be strings" do
plugin_names = ['stubby', 'acts_as_chunky_bacon', :a, :plugin_with_no_lib_dir]
Rails::Initializer.run do |config|
+ config.root = app_path
config.plugins = ['stubby', 'acts_as_chunky_bacon', :a, :plugin_with_no_lib_dir]
end
- Rails.application.new
+ Rails.initialize!
assert_plugins plugin_names, Rails.application.config.loaded_plugins, @failure_tip
end
test "all plugins loaded when all is used" do
Rails::Initializer.run do |config|
+ config.root = app_path
config.plugins = [:stubby, :acts_as_chunky_bacon, :all]
end
- Rails.application.new
-
+ Rails.initialize!
+
assert_plugins [:stubby, :acts_as_chunky_bacon, :a, :engine, :gemlike, :plugin_with_no_lib_dir], Rails.application.config.loaded_plugins, @failure_tip
end
test "all loaded plugins are added to the load paths" do
Rails::Initializer.run do |config|
+ config.root = app_path
config.plugins = [:stubby, :acts_as_chunky_bacon]
end
- Rails.application.new
+ Rails.initialize!
assert $LOAD_PATH.include?("#{app_path}/vendor/plugins/default/stubby/lib")
assert $LOAD_PATH.include?("#{app_path}/vendor/plugins/default/acts/acts_as_chunky_bacon/lib")
@@ -75,11 +80,12 @@ module ApplicationTests
test "registering a plugin name that does not exist raises a load error" do
Rails::Initializer.run do |config|
+ config.root = app_path
config.plugins = [:stubby, :acts_as_a_non_existant_plugin]
end
assert_raise(LoadError) do
- Rails.application.new
+ Rails.initialize!
end
end
@@ -89,9 +95,10 @@ module ApplicationTests
begin
Rails::Initializer.run do |config|
+ config.root = app_path
config.plugins = [:stubby, :acts_as_chunky_bacon, :non_existant_plugin1, :non_existant_plugin2]
end
- Rails.application.new
+ Rails.initialize!
flunk "Expected a LoadError but did not get one"
rescue LoadError => e
assert_plugins valid_plugins, Rails.application.config.loaded_plugins, @failure_tip
diff --git a/railties/test/backtrace_cleaner_test.rb b/railties/test/backtrace_cleaner_test.rb
index c3e4f970fe..4e273852e0 100644
--- a/railties/test/backtrace_cleaner_test.rb
+++ b/railties/test/backtrace_cleaner_test.rb
@@ -1,6 +1,4 @@
require 'abstract_unit'
-
-require 'rails/initializer'
require 'rails/backtrace_cleaner'
if defined? Test::Unit::Util::BacktraceFilter
@@ -31,31 +29,26 @@ else
$stderr.puts 'No BacktraceFilter for minitest'
end
-class BacktraceCleanerVendorGemTest < ActiveSupport::TestCase
- def setup
- @cleaner = Rails::BacktraceCleaner.new
- end
-
- test "should format installed gems correctly" do
- @backtrace = [ "#{Gem.default_dir}/gems/nosuchgem-1.2.3/lib/foo.rb" ]
- @result = @cleaner.clean(@backtrace)
- assert_equal "nosuchgem (1.2.3) lib/foo.rb", @result[0]
- end
+if defined? Gem
+ class BacktraceCleanerVendorGemTest < ActiveSupport::TestCase
+ def setup
+ @cleaner = Rails::BacktraceCleaner.new
+ end
- test "should format installed gems not in Gem.default_dir correctly" do
- @target_dir = Gem.path.detect { |p| p != Gem.default_dir }
- # skip this test if default_dir is the only directory on Gem.path
- if @target_dir
- @backtrace = [ "#{@target_dir}/gems/nosuchgem-1.2.3/lib/foo.rb" ]
+ test "should format installed gems correctly" do
+ @backtrace = [ "#{Gem.path[0]}/gems/nosuchgem-1.2.3/lib/foo.rb" ]
@result = @cleaner.clean(@backtrace)
assert_equal "nosuchgem (1.2.3) lib/foo.rb", @result[0]
end
- end
- test "should format vendor gems correctly" do
- @backtrace = [ "#{Rails::GemDependency.unpacked_path}/nosuchgem-1.2.3/lib/foo.rb" ]
- @result = @cleaner.clean(@backtrace)
- assert_equal "nosuchgem (1.2.3) [v] lib/foo.rb", @result[0]
+ test "should format installed gems not in Gem.default_dir correctly" do
+ @target_dir = Gem.path.detect { |p| p != Gem.default_dir }
+ # skip this test if default_dir is the only directory on Gem.path
+ if @target_dir
+ @backtrace = [ "#{@target_dir}/gems/nosuchgem-1.2.3/lib/foo.rb" ]
+ @result = @cleaner.clean(@backtrace)
+ assert_equal "nosuchgem (1.2.3) lib/foo.rb", @result[0]
+ end
+ end
end
-
end
diff --git a/railties/test/boot_test.rb b/railties/test/boot_test.rb
deleted file mode 100644
index 1280d27ffe..0000000000
--- a/railties/test/boot_test.rb
+++ /dev/null
@@ -1,172 +0,0 @@
-require 'abstract_unit'
-require 'rails/initializer'
-require "#{File.dirname(__FILE__)}/../lib/rails/generators/rails/app/templates/config/boot"
-require 'rails/gem_dependency'
-
-class BootTest < Test::Unit::TestCase
- def test_boot_returns_if_booted
- Rails.expects(:booted?).returns(true)
- Rails.expects(:pick_boot).never
- assert_nil Rails.boot!
- end
-
- def test_boot_preinitializes_then_picks_and_runs_if_not_booted
- Rails.expects(:booted?).returns(false)
- Rails.expects(:preinitialize)
- Rails.expects(:pick_boot).returns(mock(:run => 'result'))
- assert_equal 'result', Rails.boot!
- end
-
- def test_preinitialize_does_not_raise_exception_if_preinitializer_file_does_not_exist
- Rails.stubs(:preinitializer_path).returns('/there/is/no/such/file')
-
- assert_nothing_raised { Rails.preinitialize }
- end
-
- def test_load_preinitializer_loads_preinitializer_file
- Rails.stubs(:preinitializer_path).returns("#{File.dirname(__FILE__)}/fixtures/environment_with_constant.rb")
-
- assert_nil $initialize_test_set_from_env
- Rails.preinitialize
- assert_equal "success", $initialize_test_set_from_env
- ensure
- $initialize_test_set_from_env = nil
- end
-
- def test_boot_vendor_rails_by_default
- Rails.expects(:booted?).returns(false)
- Rails.expects(:preinitialize)
- File.expects(:exist?).with("#{RAILS_ROOT}/vendor/rails").returns(true)
- Rails::VendorBoot.any_instance.expects(:run).returns('result')
- assert_equal 'result', Rails.boot!
- end
-
- def test_boot_gem_rails_otherwise
- Rails.expects(:booted?).returns(false)
- Rails.expects(:preinitialize)
- File.expects(:exist?).with("#{RAILS_ROOT}/vendor/rails").returns(false)
- Rails::GemBoot.any_instance.expects(:run).returns('result')
- assert_equal 'result', Rails.boot!
- end
-end
-
-class VendorBootTest < Test::Unit::TestCase
- include Rails
-
- def test_load_initializer_requires_from_vendor_rails
- boot = VendorBoot.new
- boot.expects(:require).with("rails")
- boot.expects(:install_gem_spec_stubs)
- Rails::GemDependency.expects(:add_frozen_gem_path)
- boot.load_initializer
- end
-end
-
-class GemBootTest < Test::Unit::TestCase
- include Rails
-
- def test_load_initializer_loads_rubygems_and_the_rails_gem
- boot = GemBoot.new
- GemBoot.expects(:load_rubygems)
- boot.expects(:load_rails_gem)
- boot.expects(:require).with('rails')
- boot.load_initializer
- end
-
- def test_load_rubygems_exits_with_error_if_missing
- GemBoot.expects(:require).with('rubygems').raises(LoadError, 'missing rubygems')
- STDERR.expects(:puts)
- GemBoot.expects(:exit).with(1)
- GemBoot.load_rubygems
- end
-
- def test_load_rubygems_exits_with_error_if_too_old
- GemBoot.stubs(:rubygems_version).returns('0.0.1')
- GemBoot.expects(:require).with('rubygems').returns(true)
- STDERR.expects(:puts)
- GemBoot.expects(:exit).with(1)
- GemBoot.load_rubygems
- end
-
- def test_load_rails_gem_activates_specific_gem_if_version_given
- GemBoot.stubs(:gem_version).returns('0.0.1')
-
- boot = GemBoot.new
- boot.expects(:gem).with('rails', '0.0.1')
- boot.load_rails_gem
- end
-
- def test_load_rails_gem_activates_latest_gem_if_no_version_given
- GemBoot.stubs(:gem_version).returns(nil)
-
- boot = GemBoot.new
- boot.expects(:gem).with('rails')
- boot.load_rails_gem
- end
-
- def test_load_rails_gem_exits_with_error_if_missing
- GemBoot.stubs(:gem_version).returns('0.0.1')
-
- boot = GemBoot.new
- boot.expects(:gem).with('rails', '0.0.1').raises(Gem::LoadError, 'missing rails 0.0.1 gem')
- STDERR.expects(:puts)
- boot.expects(:exit).with(1)
- boot.load_rails_gem
- end
-end
-
-class ParseGemVersionTest < Test::Unit::TestCase
- def test_should_return_nil_if_no_lines_are_passed
- assert_equal nil, parse('')
- assert_equal nil, parse(nil)
- end
-
- def test_should_accept_either_single_or_double_quotes
- assert_equal "1.2.3", parse("RAILS_GEM_VERSION = '1.2.3'")
- assert_equal "1.2.3", parse('RAILS_GEM_VERSION = "1.2.3"')
- end
-
- def test_should_return_nil_if_no_lines_match
- assert_equal nil, parse('nothing matches on this line\nor on this line')
- end
-
- def test_should_parse_with_no_leading_space
- assert_equal "1.2.3", parse("RAILS_GEM_VERSION = '1.2.3' unless defined? RAILS_GEM_VERSION")
- assert_equal "1.2.3", parse("RAILS_GEM_VERSION = '1.2.3'")
- end
-
- def test_should_parse_with_any_number_of_leading_spaces
- assert_equal nil, parse([])
- assert_equal "1.2.3", parse(" RAILS_GEM_VERSION = '1.2.3' unless defined? RAILS_GEM_VERSION")
- assert_equal "1.2.3", parse(" RAILS_GEM_VERSION = '1.2.3' unless defined? RAILS_GEM_VERSION")
- assert_equal "1.2.3", parse(" RAILS_GEM_VERSION = '1.2.3'")
- assert_equal "1.2.3", parse(" RAILS_GEM_VERSION = '1.2.3'")
- end
-
- def test_should_ignore_unrelated_comments
- assert_equal "1.2.3", parse("# comment\nRAILS_GEM_VERSION = '1.2.3'\n# comment")
- end
-
- def test_should_ignore_commented_version_lines
- assert_equal "1.2.3", parse("#RAILS_GEM_VERSION = '9.8.7'\nRAILS_GEM_VERSION = '1.2.3'")
- assert_equal "1.2.3", parse("# RAILS_GEM_VERSION = '9.8.7'\nRAILS_GEM_VERSION = '1.2.3'")
- assert_equal "1.2.3", parse("RAILS_GEM_VERSION = '1.2.3'\n# RAILS_GEM_VERSION = '9.8.7'")
- end
-
- def test_should_allow_advanced_rubygems_version_specifications
- # See http://rubygems.org/read/chapter/16
- assert_equal "=1.2.3", parse("RAILS_GEM_VERSION = '=1.2.3'") # equal sign
- assert_equal "= 1.2.3", parse("RAILS_GEM_VERSION = '= 1.2.3'") # with space
- assert_equal "!=1.2.3", parse("RAILS_GEM_VERSION = '!=1.2.3'") # not equal
- assert_equal ">1.2.3", parse("RAILS_GEM_VERSION = '>1.2.3'") # greater than
- assert_equal "<1.2.3", parse("RAILS_GEM_VERSION = '<1.2.3'") # less than
- assert_equal ">=1.2.3", parse("RAILS_GEM_VERSION = '>=1.2.3'") # greater than or equal
- assert_equal "<=1.2.3", parse("RAILS_GEM_VERSION = '<=1.2.3'") # less than or equal
- assert_equal "~>1.2.3.0", parse("RAILS_GEM_VERSION = '~>1.2.3.0'") # approximately greater than
- end
-
- private
- def parse(text)
- Rails::GemBoot.parse_gem_version(text)
- end
-end
diff --git a/railties/test/gem_dependency_test.rb b/railties/test/gem_dependency_test.rb
deleted file mode 100644
index 92132be992..0000000000
--- a/railties/test/gem_dependency_test.rb
+++ /dev/null
@@ -1,220 +0,0 @@
-require 'plugin_test_helper'
-require 'rails/gem_dependency'
-
-class Rails::GemDependency
- public :install_command, :unpack_command
-end
-
-Rails::VendorGemSourceIndex.silence_spec_warnings = true
-
-class GemDependencyTest < Test::Unit::TestCase
- def setup
- @gem = Rails::GemDependency.new "xhpricotx"
- @gem_with_source = Rails::GemDependency.new "xhpricotx", :source => "http://code.whytheluckystiff.net"
- @gem_with_version = Rails::GemDependency.new "xhpricotx", :version => "= 0.6"
- @gem_with_lib = Rails::GemDependency.new "xaws-s3x", :lib => "aws/s3"
- @gem_without_load = Rails::GemDependency.new "xhpricotx", :lib => false
- end
-
- def test_configuration_adds_gem_dependency
- config = Rails::Configuration.new
- config.gem "xaws-s3x", :lib => "aws/s3", :version => "0.4.0"
- assert_equal [["install", "xaws-s3x", "--version", '"= 0.4.0"']], config.gems.collect { |g| g.install_command }
- end
-
- def test_gem_creates_install_command
- assert_equal %w(install xhpricotx), @gem.install_command
- end
-
- def test_gem_with_source_creates_install_command
- assert_equal %w(install xhpricotx --source http://code.whytheluckystiff.net), @gem_with_source.install_command
- end
-
- def test_gem_with_version_creates_install_command
- assert_equal ["install", "xhpricotx", "--version", '"= 0.6"'], @gem_with_version.install_command
- end
-
- def test_gem_creates_unpack_command
- assert_equal %w(unpack xhpricotx), @gem.unpack_command
- end
-
- def test_gem_with_version_unpack_install_command
- # stub out specification method, or else test will fail if hpricot 0.6 isn't installed
- mock_spec = mock()
- mock_spec.stubs(:version).returns('0.6')
- @gem_with_version.stubs(:specification).returns(mock_spec)
- assert_equal ["unpack", "xhpricotx", "--version", '= 0.6'], @gem_with_version.unpack_command
- end
-
- def test_gem_adds_load_paths
- @gem.expects(:gem).with(@gem)
- @gem.add_load_paths
- end
-
- def test_gem_with_version_adds_load_paths
- @gem_with_version.expects(:gem).with(@gem_with_version)
- @gem_with_version.add_load_paths
- assert @gem_with_version.load_paths_added?
- end
-
- def test_gem_loading
- @gem.expects(:gem).with(@gem)
- @gem.expects(:require).with(@gem.name)
- @gem.add_load_paths
- @gem.load
- assert @gem.loaded?
- end
-
- def test_gem_with_lib_loading
- @gem_with_lib.expects(:gem).with(@gem_with_lib)
- @gem_with_lib.expects(:require).with(@gem_with_lib.lib)
- @gem_with_lib.add_load_paths
- @gem_with_lib.load
- assert @gem_with_lib.loaded?
- end
-
- def test_gem_without_lib_loading
- @gem_without_load.expects(:gem).with(@gem_without_load)
- @gem_without_load.expects(:require).with(@gem_without_load.lib).never
- @gem_without_load.add_load_paths
- @gem_without_load.load
- end
-
- def test_gem_dependencies_compare_for_uniq
- gem1 = Rails::GemDependency.new "gem1"
- gem1a = Rails::GemDependency.new "gem1"
- gem2 = Rails::GemDependency.new "gem2"
- gem2a = Rails::GemDependency.new "gem2"
- gem3 = Rails::GemDependency.new "gem2", :version => ">=0.1"
- gem3a = Rails::GemDependency.new "gem2", :version => ">=0.1"
- gem4 = Rails::GemDependency.new "gem3"
- gems = [gem1, gem2, gem1a, gem3, gem2a, gem4, gem3a, gem2, gem4]
- assert_equal 4, gems.uniq.size
- end
-
- def test_gem_load_frozen
- dummy_gem = Rails::GemDependency.new "dummy-gem-a"
- dummy_gem.add_load_paths
- dummy_gem.load
- assert_not_nil DUMMY_GEM_A_VERSION
- end
-
- def test_gem_load_frozen_specific_version
- dummy_gem = Rails::GemDependency.new "dummy-gem-b", :version => '0.4.0'
- dummy_gem.add_load_paths
- dummy_gem.load
- assert_not_nil DUMMY_GEM_B_VERSION
- assert_equal '0.4.0', DUMMY_GEM_B_VERSION
- end
-
- def test_gem_load_frozen_minimum_version
- dummy_gem = Rails::GemDependency.new "dummy-gem-c", :version => '>=0.5.0'
- dummy_gem.add_load_paths
- dummy_gem.load
- assert_not_nil DUMMY_GEM_C_VERSION
- assert_equal '0.6.0', DUMMY_GEM_C_VERSION
- end
-
- def test_gem_load_missing_specification
- dummy_gem = Rails::GemDependency.new "dummy-gem-d"
- dummy_gem.add_load_paths
- dummy_gem.load
- assert_not_nil DUMMY_GEM_D_VERSION
- assert_equal '1.0.0', DUMMY_GEM_D_VERSION
- assert_equal ['lib', 'lib/dummy-gem-d.rb'], dummy_gem.specification.files
- end
-
- def test_gem_load_bad_specification
- dummy_gem = Rails::GemDependency.new "dummy-gem-e", :version => "= 1.0.0"
- dummy_gem.add_load_paths
- dummy_gem.load
- assert_not_nil DUMMY_GEM_E_VERSION
- assert_equal '1.0.0', DUMMY_GEM_E_VERSION
- end
-
- def test_gem_handle_missing_dependencies
- dummy_gem = Rails::GemDependency.new "dummy-gem-g"
- dummy_gem.add_load_paths
- dummy_gem.load
- assert_equal 1, dummy_gem.dependencies.size
- assert_equal 1, dummy_gem.dependencies.first.dependencies.size
- assert_nothing_raised do
- dummy_gem.dependencies.each do |g|
- g.dependencies
- end
- end
- end
-
- def test_gem_ignores_development_dependencies
- dummy_gem = Rails::GemDependency.new "dummy-gem-k"
- dummy_gem.add_load_paths
- dummy_gem.load
- assert_equal 1, dummy_gem.dependencies.size
- end
-
- def test_gem_guards_against_duplicate_unpacks
- dummy_gem = Rails::GemDependency.new "dummy-gem-a"
- dummy_gem.stubs(:frozen?).returns(true)
- dummy_gem.expects(:unpack_base).never
- dummy_gem.unpack
- end
-
- def test_gem_does_not_unpack_framework_gems
- dummy_gem = Rails::GemDependency.new "dummy-gem-a"
- dummy_gem.stubs(:framework_gem?).returns(true)
- dummy_gem.expects(:unpack_base).never
- dummy_gem.unpack
- end
-
- def test_gem_from_directory_name_attempts_to_load_specification
- assert_raises RuntimeError do
- dummy_gem = Rails::GemDependency.from_directory_name('dummy-gem-1.1')
- end
- end
-
- def test_gem_from_directory_name
- dummy_gem = Rails::GemDependency.from_directory_name('dummy-gem-1.1', false)
- assert_equal 'dummy-gem', dummy_gem.name
- assert_equal '= 1.1', dummy_gem.version_requirements.to_s
- end
-
- def test_gem_from_directory_name_loads_specification_successfully
- assert_nothing_raised do
- dummy_gem = Rails::GemDependency.from_directory_name(File.join(Rails::GemDependency.unpacked_path, 'dummy-gem-g-1.0.0'))
- assert_not_nil dummy_gem.specification
- end
- end
-
- def test_gem_from_invalid_directory_name
- assert_raises RuntimeError do
- dummy_gem = Rails::GemDependency.from_directory_name('dummy-gem')
- end
- assert_raises RuntimeError do
- dummy_gem = Rails::GemDependency.from_directory_name('dummy')
- end
- end
-
- def test_gem_determines_build_status
- assert_equal true, Rails::GemDependency.new("dummy-gem-a").built?
- assert_equal true, Rails::GemDependency.new("dummy-gem-i").built?
- assert_equal false, Rails::GemDependency.new("dummy-gem-j").built?
- end
-
- def test_gem_determines_build_status_only_on_vendor_gems
- framework_gem = Rails::GemDependency.new('dummy-framework-gem')
- framework_gem.stubs(:framework_gem?).returns(true) # already loaded
- framework_gem.stubs(:vendor_rails?).returns(false) # but not in vendor/rails
- framework_gem.stubs(:vendor_gem?).returns(false) # and not in vendor/gems
- framework_gem.add_load_paths # freeze framework gem early
- assert framework_gem.built?
- end
-
- def test_gem_build_passes_options_to_dependencies
- start_gem = Rails::GemDependency.new("dummy-gem-g")
- dep_gem = Rails::GemDependency.new("dummy-gem-f")
- start_gem.stubs(:dependencies).returns([dep_gem])
- dep_gem.expects(:build).with({ :force => true }).once
- start_gem.build(:force => true)
- end
-
-end
diff --git a/railties/test/generators/actions_test.rb b/railties/test/generators/actions_test.rb
index adc61f6d8a..199b5fa8b4 100644
--- a/railties/test/generators/actions_test.rb
+++ b/railties/test/generators/actions_test.rb
@@ -89,7 +89,7 @@ class ActionsTest < GeneratorsTestCase
def test_environment_should_include_data_in_environment_initializer_block
run_generator
- load_paths = 'config.load_paths += %w["#{RAILS_ROOT}/app/extras"]'
+ load_paths = 'config.load_paths += %w["#{Rails.root}/app/extras"]'
action :environment, load_paths
assert_file 'config/application.rb', /#{Regexp.escape(load_paths)}/
end
diff --git a/railties/test/generators/app_generator_test.rb b/railties/test/generators/app_generator_test.rb
index 5d6a9f6de9..20f2a24e6d 100644
--- a/railties/test/generators/app_generator_test.rb
+++ b/railties/test/generators/app_generator_test.rb
@@ -114,11 +114,18 @@ class AppGeneratorTest < GeneratorsTestCase
generator(:freeze => true, :database => "sqlite3").expects(:run).
with("rake rails:freeze:edge", :verbose => false)
silence(:stdout){ generator.invoke }
- assert_file 'config/environment.rb', /# RAILS_GEM_VERSION/
+
+ assert_file 'Gemfile' do |content|
+ flag = %(gem "rails", "#{Rails::VERSION::STRING}", :git => "git://github.com/rails/rails.git")
+ assert_match /^#{Regexp.escape(flag)}$/, content
+
+ flag = %(# gem "rails", "#{Rails::VERSION::STRING}")
+ assert_match /^#{Regexp.escape(flag)}$/, content
+ end
end
def test_template_from_dir_pwd
- FileUtils.cd(RAILS_ROOT)
+ FileUtils.cd(Rails.root)
assert_match /It works from file!/, run_generator(["-m", "lib/template.rb"])
end
diff --git a/railties/test/generators/generators_test_helper.rb b/railties/test/generators/generators_test_helper.rb
index 7599bda8a2..ccf08c347c 100644
--- a/railties/test/generators/generators_test_helper.rb
+++ b/railties/test/generators/generators_test_helper.rb
@@ -1,24 +1,10 @@
-require 'test/unit'
-require 'fileutils'
-
-fixtures = File.expand_path(File.join(File.dirname(__FILE__), '..', 'fixtures'))
-if defined?(RAILS_ROOT)
- RAILS_ROOT.replace fixtures
-else
- RAILS_ROOT = fixtures
-end
-
-$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../../../activemodel/lib"
-$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../../../activerecord/lib"
-$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../../../actionpack/lib"
-$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../../lib"
# TODO: Fix this RAILS_ENV stuff
RAILS_ENV = 'test'
-require "rails/core"
-require 'rails/generators'
+require 'abstract_unit'
+Rails.application.config.root = File.expand_path(File.join(File.dirname(__FILE__), '..', 'fixtures'))
+require 'rails/generators'
require 'rubygems'
-
require 'active_record'
require 'action_dispatch'
diff --git a/railties/test/generators/scaffold_controller_generator_test.rb b/railties/test/generators/scaffold_controller_generator_test.rb
index f555725eb8..02155c295c 100644
--- a/railties/test/generators/scaffold_controller_generator_test.rb
+++ b/railties/test/generators/scaffold_controller_generator_test.rb
@@ -2,6 +2,11 @@ require 'abstract_unit'
require 'generators/generators_test_helper'
require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator'
+module Unknown
+ module Generators
+ end
+end
+
class ScaffoldControllerGeneratorTest < GeneratorsTestCase
def test_controller_skeleton_is_created
@@ -97,10 +102,38 @@ class ScaffoldControllerGeneratorTest < GeneratorsTestCase
assert_no_file "app/views/layouts/users.html.erb"
end
- def test_error_is_shown_if_orm_does_not_provide_interface
- error = capture(:stderr){ run_generator ["User", "--orm=unknown"] }
- assert_equal "Could not load Unknown::Generators::ActiveModel, skipping controller. " <<
- "Error: no such file to load -- rails/generators/unknown.\n", error
+ def test_default_orm_is_used
+ run_generator ["User", "--orm=unknown"]
+
+ assert_file "app/controllers/users_controller.rb" do |content|
+ assert_match /class UsersController < ApplicationController/, content
+
+ assert_instance_method content, :index do |m|
+ assert_match /@users = User\.all/, m
+ end
+ end
+ end
+
+ def test_customized_orm_is_used
+ klass = Class.new(Rails::Generators::ActiveModel) do
+ def self.all(klass)
+ "#{klass}.find(:all)"
+ end
+ end
+
+ Unknown::Generators.const_set(:ActiveModel, klass)
+ run_generator ["User", "--orm=unknown"]
+
+ assert_file "app/controllers/users_controller.rb" do |content|
+ assert_match /class UsersController < ApplicationController/, content
+
+ assert_instance_method content, :index do |m|
+ assert_match /@users = User\.find\(:all\)/, m
+ assert_no_match /@users = User\.all/, m
+ end
+ end
+ ensure
+ Unknown::Generators.send :remove_const, :ActiveModel
end
protected
diff --git a/railties/test/generators_test.rb b/railties/test/generators_test.rb
index 7e6b7b183c..178b5ef6de 100644
--- a/railties/test/generators_test.rb
+++ b/railties/test/generators_test.rb
@@ -80,7 +80,7 @@ class GeneratorsTest < GeneratorsTestCase
Rails::Generators.instance_variable_set(:@load_paths, nil)
spec = Gem::Specification.new
- spec.expects(:full_gem_path).returns(File.join(RAILS_ROOT, 'vendor', 'another_gem_path', 'xspec'))
+ spec.expects(:full_gem_path).returns(File.join(Rails.root, 'vendor', 'another_gem_path', 'xspec'))
Gem.expects(:respond_to?).with(:loaded_specs).returns(true)
Gem.expects(:loaded_specs).returns(:spec => spec)
@@ -101,10 +101,11 @@ class GeneratorsTest < GeneratorsTestCase
def test_rails_generators_with_others_information
output = capture(:stdout){ Rails::Generators.help }.split("\n").last
- assert_equal "Others: active_record:fixjour, fixjour, mspec, rails:javascripts, wrong.", output
+ assert_equal "Others: active_record:fixjour, fixjour, mspec, rails:javascripts.", output
end
def test_warning_is_shown_if_generator_cant_be_loaded
+ Rails::Generators.load_paths << File.expand_path("../fixtures/vendor/gems/gems/wrong", __FILE__)
output = capture(:stderr){ Rails::Generators.find_by_namespace(:wrong) }
assert_match /\[WARNING\] Could not load generator at/, output
assert_match /Error: uninitialized constant Rails::Generator/, output
@@ -118,7 +119,7 @@ class GeneratorsTest < GeneratorsTestCase
end
def test_rails_root_templates
- template = File.join(RAILS_ROOT, "lib", "templates", "active_record", "model", "model.rb")
+ template = File.join(Rails.root, "lib", "templates", "active_record", "model", "model.rb")
# Create template
mkdir_p(File.dirname(template))
@@ -170,6 +171,6 @@ class GeneratorsTest < GeneratorsTestCase
def test_source_paths_for_not_namespaced_generators
mspec = Rails::Generators.find_by_namespace :mspec
- assert mspec.source_paths.include?(File.join(RAILS_ROOT, "lib", "templates", "mspec"))
+ assert mspec.source_paths.include?(File.join(Rails.root, "lib", "templates", "mspec"))
end
end
diff --git a/railties/test/initializable_test.rb b/railties/test/initializable_test.rb
index 7c8aed00c9..f7237e69cc 100644
--- a/railties/test/initializable_test.rb
+++ b/railties/test/initializable_test.rb
@@ -31,38 +31,113 @@ module InitializableTests
end
end
+ class Parent
+ extend Rails::Initializable
+
+ initializer :one do
+ $arr << 1
+ end
+
+ initializer :two do
+ $arr << 2
+ end
+ end
+
+ class Child < Parent
+ extend Rails::Initializable
+
+ initializer :three, :before => :one do
+ $arr << 3
+ end
+
+ initializer :four, :after => :one do
+ $arr << 4
+ end
+ end
+
+ class Parent
+ initializer :five, :before => :one do
+ $arr << 5
+ end
+ end
+
+ class Instance
+ include Rails::Initializable
+
+ initializer :one do
+ $arr << 1
+ end
+
+ initializer :two do
+ $arr << 2
+ end
+
+ initializer :three, :global => true do
+ $arr << 3
+ end
+
+ initializer :four, :global => true do
+ $arr << 4
+ end
+ end
+
class Basic < ActiveSupport::TestCase
include ActiveSupport::Testing::Isolation
test "initializers run" do
- Foo.initializers.run
+ Foo.run_initializers
assert_equal 1, Foo.foo
end
test "initializers are inherited" do
- Bar.initializers.run
+ Bar.run_initializers
assert_equal [1, 1], [Bar.foo, Bar.bar]
end
test "initializers only get run once" do
- Foo.initializers.run
- Foo.initializers.run
+ Foo.run_initializers
+ Foo.run_initializers
assert_equal 1, Foo.foo
end
test "running initializers on children does not effect the parent" do
- Bar.initializers.run
+ Bar.run_initializers
assert_nil Foo.foo
assert_nil Foo.bar
end
- test "inherited initializers are the same objects" do
- assert Foo.initializers[:foo].eql?(Bar.initializers[:foo])
- end
-
test "initializing with modules" do
- Word.initializers.run
+ Word.run_initializers
assert_equal "bird", $word
end
end
+
+ class BeforeAfter < ActiveSupport::TestCase
+ test "running on parent" do
+ $arr = []
+ Parent.run_initializers
+ assert_equal [5, 1, 2], $arr
+ end
+
+ test "running on child" do
+ $arr = []
+ Child.run_initializers
+ assert_equal [5, 3, 1, 4, 2], $arr
+ end
+ end
+
+ class InstanceTest < ActiveSupport::TestCase
+ test "running locals" do
+ $arr = []
+ instance = Instance.new
+ instance.run_initializers
+ assert_equal [1, 2], $arr
+ end
+
+ test "running globals" do
+ $arr = []
+ Instance.run_initializers
+ assert_equal [3, 4], $arr
+ end
+ end
end \ No newline at end of file
diff --git a/railties/test/initializer/check_ruby_version_test.rb b/railties/test/initializer/check_ruby_version_test.rb
index 6c32f5635b..cf956e68fb 100644
--- a/railties/test/initializer/check_ruby_version_test.rb
+++ b/railties/test/initializer/check_ruby_version_test.rb
@@ -7,6 +7,7 @@ module InitializerTests
def setup
build_app
boot_rails
+ require "rails"
end
test "rails does not initialize with ruby version 1.8.1" do
@@ -42,7 +43,7 @@ module InitializerTests
set_ruby_version(version)
assert_nothing_raised "It appears that rails does not boot" do
Rails::Initializer.run { |c| c.frameworks = [] }
- Rails.application.new
+ Rails.initialize!
end
end
@@ -51,7 +52,7 @@ module InitializerTests
$stderr = File.open("/dev/null", "w")
assert_raises(SystemExit) do
Rails::Initializer.run { |c| c.frameworks = [] }
- Rails.application.new
+ Rails.initialize!
end
end
end
diff --git a/railties/test/initializer/initialize_i18n_test.rb b/railties/test/initializer/initialize_i18n_test.rb
index f952d06f94..d664f96ad1 100644
--- a/railties/test/initializer/initialize_i18n_test.rb
+++ b/railties/test/initializer/initialize_i18n_test.rb
@@ -7,14 +7,16 @@ module InitializerTests
def setup
build_app
boot_rails
+ require "rails"
end
# test_config_defaults_and_settings_should_be_added_to_i18n_defaults
test "i18n config defaults and settings should be added to i18n defaults" do
Rails::Initializer.run do |c|
+ c.root = app_path
c.i18n.load_path << "my/other/locale.yml"
end
- Rails.application.new
+ Rails.initialize!
#{RAILS_FRAMEWORK_ROOT}/railties/test/fixtures/plugins/engines/engine/config/locales/en.yml
assert_equal %W(
@@ -24,7 +26,7 @@ module InitializerTests
#{RAILS_FRAMEWORK_ROOT}/actionpack/lib/action_view/locale/en.yml
#{RAILS_FRAMEWORK_ROOT}/railties/tmp/app/config/locales/en.yml
my/other/locale.yml
- ), I18n.load_path
+ ).map { |path| File.expand_path(path) }, I18n.load_path.map { |path| File.expand_path(path) }
end
test "i18n finds locale files in engines" do
@@ -34,9 +36,10 @@ module InitializerTests
app_file "vendor/plugins/engine/config/locales/en.yml", "hello:"
Rails::Initializer.run do |c|
+ c.root = app_path
c.i18n.load_path << "my/other/locale.yml"
end
- Rails.application.new
+ Rails.initialize!
#{RAILS_FRAMEWORK_ROOT}/railties/test/fixtures/plugins/engines/engine/config/locales/en.yml
assert_equal %W(
@@ -47,7 +50,7 @@ module InitializerTests
#{app_path}/config/locales/en.yml
my/other/locale.yml
#{app_path}/vendor/plugins/engine/config/locales/en.yml
- ), I18n.load_path
+ ).map { |path| File.expand_path(path) }, I18n.load_path.map { |path| File.expand_path(path) }
end
end
end \ No newline at end of file
diff --git a/railties/test/initializer/path_test.rb b/railties/test/initializer/path_test.rb
index ce8fc4b8b0..1b58a58555 100644
--- a/railties/test/initializer/path_test.rb
+++ b/railties/test/initializer/path_test.rb
@@ -6,13 +6,15 @@ class PathsTest < Test::Unit::TestCase
def setup
build_app
boot_rails
+ require "rails"
Rails::Initializer.run do |config|
+ config.root = app_path
config.frameworks = [:action_controller, :action_view, :action_mailer, :active_record]
config.after_initialize do
ActionController::Base.session_store = nil
end
end
- Rails.application.new
+ Rails.initialize!
@paths = Rails.application.config.paths
end
diff --git a/railties/test/initializer_test.rb b/railties/test/initializer_test.rb
deleted file mode 100644
index 80e774b7b7..0000000000
--- a/railties/test/initializer_test.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require 'abstract_unit'
-require 'rails/initializer'
-require 'rails/generators'
-
-require 'action_view'
-require 'action_mailer'
-require 'active_record'
-
-require 'plugin_test_helper'
-
-class RailsRootTest < Test::Unit::TestCase
- def test_rails_dot_root_equals_rails_root
- assert_equal RAILS_ROOT, Rails.root.to_s
- end
-
- def test_rails_dot_root_should_be_a_pathname
- assert_equal File.join(RAILS_ROOT, 'app', 'controllers'), Rails.root.join('app', 'controllers').to_s
- end
-end
-
diff --git a/railties/test/isolation/abstract_unit.rb b/railties/test/isolation/abstract_unit.rb
index 5bc878b3be..462a4d8dea 100644
--- a/railties/test/isolation/abstract_unit.rb
+++ b/railties/test/isolation/abstract_unit.rb
@@ -6,7 +6,6 @@
#
# It is also good to know what is the bare minimum to get
# Rails booted up.
-
require 'fileutils'
# TODO: Remove rubygems when possible
@@ -93,6 +92,12 @@ module TestHelpers
add_to_config 'config.action_controller.session = { :key => "_myapp_session", :secret => "bac838a849c1d5c4de2e6a50af826079" }'
end
+ def script(script)
+ Dir.chdir(app_path) do
+ `#{Gem.ruby} #{app_path}/script/#{script}`
+ end
+ end
+
def add_to_config(str)
environment = File.read("#{app_path}/config/application.rb")
if environment =~ /(\n\s*end\s*)\Z/
@@ -114,16 +119,23 @@ module TestHelpers
end
def boot_rails
- # TMP mega hax to prevent boot.rb from actually booting
- Object.class_eval <<-RUBY, __FILE__, __LINE__+1
- module Rails
- Initializer = 'lol'
- require "#{app_path}/config/boot"
- remove_const(:Initializer)
- booter = VendorBoot.new
- booter.run
+ root = File.expand_path('../../../..', __FILE__)
+ begin
+ require "#{root}/vendor/gems/environment"
+ rescue LoadError
+ %w(
+ actionmailer/lib
+ actionpack/lib
+ activemodel/lib
+ activerecord/lib
+ activeresource/lib
+ activesupport/lib
+ railties/lib
+ railties
+ ).reverse_each do |path|
+ $:.unshift "#{root}/#{path}"
end
- RUBY
+ end
end
end
end
@@ -142,7 +154,12 @@ Module.new do
if File.exist?(tmp_path)
FileUtils.rm_rf(tmp_path)
end
-
FileUtils.mkdir(tmp_path)
- `#{Gem.ruby} #{RAILS_FRAMEWORK_ROOT}/railties/bin/rails #{tmp_path('app_template')}`
+
+ environment = File.expand_path('../../../../vendor/gems/environment', __FILE__)
+
+ `#{Gem.ruby} -r #{environment} #{RAILS_FRAMEWORK_ROOT}/railties/bin/rails #{tmp_path('app_template')}`
+ File.open("#{tmp_path}/app_template/config/boot.rb", 'w') do |f|
+ f.puts "require '#{environment}' ; require 'rails'"
+ end
end
diff --git a/railties/test/plugins/vendored_test.rb b/railties/test/plugins/vendored_test.rb
new file mode 100644
index 0000000000..71de542ff7
--- /dev/null
+++ b/railties/test/plugins/vendored_test.rb
@@ -0,0 +1,19 @@
+require "isolation/abstract_unit"
+
+module ApplicationTests
+ class PluginTest < Test::Unit::TestCase
+ include ActiveSupport::Testing::Isolation
+
+ def setup
+ build_app
+ end
+
+ test "generates the plugin" do
+ script "generate plugin my_plugin"
+ File.open("#{app_path}/vendor/plugins/my_plugin/init.rb", 'w') do |f|
+ f.puts "OMG = 'hello'"
+ end
+ require "#{app_path}/config/environment"
+ end
+ end
+end \ No newline at end of file
diff --git a/railties/test/rails_info_controller_test.rb b/railties/test/rails_info_controller_test.rb
index 99cf9168e1..a0484c0868 100644
--- a/railties/test/rails_info_controller_test.rb
+++ b/railties/test/rails_info_controller_test.rb
@@ -4,10 +4,6 @@ require 'action_controller'
require 'rails/info'
require 'rails/info_controller'
-ActionController::Routing::Routes.draw do |map|
- map.connect ':controller/:action/:id'
-end
-
module ActionController
class Base
include ActionController::Testing
@@ -18,9 +14,17 @@ class InfoControllerTest < ActionController::TestCase
tests Rails::InfoController
def setup
+ ActionController::Routing.use_controllers!(['rails/info'])
+ ActionController::Routing::Routes.draw do |map|
+ map.connect ':controller/:action/:id'
+ end
@controller.stubs(:consider_all_requests_local => false, :local_request? => true)
end
+ def teardown
+ ActionController::Routing.use_controllers! nil
+ end
+
test "info controller does not allow remote requests" do
@controller.stubs(:consider_all_requests_local => false, :local_request? => false)
get :properties