diff options
author | Jeffrey Hardy <packagethief@gmail.com> | 2009-03-23 23:15:47 -0400 |
---|---|---|
committer | Jeffrey Hardy <packagethief@gmail.com> | 2009-03-23 23:15:47 -0400 |
commit | 76556b08bb8d22dccd7c44e302f625442c5cc8f0 (patch) | |
tree | 560889c89fcaac57778b6cfe2ba135fd70a69f5c /railties/test | |
parent | 4b6458bf4cbf14007878b84a3fbc193f3365eebe (diff) | |
parent | f7bdfe8bb76f7830cc2946cf0fcda2bb6d5e3e78 (diff) | |
download | rails-76556b08bb8d22dccd7c44e302f625442c5cc8f0.tar.gz rails-76556b08bb8d22dccd7c44e302f625442c5cc8f0.tar.bz2 rails-76556b08bb8d22dccd7c44e302f625442c5cc8f0.zip |
Merge branch 'master' of git://github.com/lifo/docrails
* 'master' of git://github.com/lifo/docrails: (259 commits)
Fix a small typo
ensure authors get warnings about broken links, and ensure end users don't
in guides generator, warn about duplicate header IDs only if WARN_DUPLICATE_HEADERS
replace edit distance implementation with one written from scratch to avoid license issues
removes a wrong comment in the finders guide
updates fxn picture
thanks but release notes are mostly frozen once they are published, and provide only an overview of the new stuff
Added extra notes to nested model forms explanation in 2.3 release notes to cover has_one relationships
clarifies a bit more what's the issue with check boxes and arrays of parameters
be even more ambiguous about the order of generation of hidden input for check boxes in form helper guide
this page referred to an :href_options keyword hash, in fact the correct keyword (the one the code responds to) is :html
update explanation of check box generation according to f400209
Hidden field with check box goes first.
update rack fixture to be ruby 1.9 compat
Better error message to try to figure out why the CI build is failing
ruby 1.9 compat: Pathname doesn't support =~
update rack fixture to be ruby 1.9 compat
update metal fixtures to be ruby 1.9 compat
Fix brittle Time.now mock
Ensure our bundled version of rack is at the front of the load path
...
Diffstat (limited to 'railties/test')
24 files changed, 350 insertions, 64 deletions
diff --git a/railties/test/abstract_unit.rb b/railties/test/abstract_unit.rb index a950fc8b7e..0addcb8bf3 100644 --- a/railties/test/abstract_unit.rb +++ b/railties/test/abstract_unit.rb @@ -1,5 +1,7 @@ $:.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__) + "/../lib" $:.unshift File.dirname(__FILE__) + "/../builtin/rails_info" diff --git a/railties/test/backtrace_cleaner_test.rb b/railties/test/backtrace_cleaner_test.rb index 5955fd2856..7a1b361440 100644 --- a/railties/test/backtrace_cleaner_test.rb +++ b/railties/test/backtrace_cleaner_test.rb @@ -3,26 +3,59 @@ require 'abstract_unit' require 'initializer' require 'rails/backtrace_cleaner' -class TestWithBacktrace - include Test::Unit::Util::BacktraceFilter - include Rails::BacktraceFilterForTestUnit +if defined? Test::Unit::Util::BacktraceFilter + class TestWithBacktrace + include Test::Unit::Util::BacktraceFilter + include Rails::BacktraceFilterForTestUnit + end + + class BacktraceCleanerFilterTest < ActiveSupport::TestCase + def setup + @test = TestWithBacktrace.new + @backtrace = [ './test/rails/benchmark_test.rb', './test/rails/dependencies.rb', '/opt/local/lib/ruby/kernel.rb' ] + end + + test "test with backtrace should use the rails backtrace cleaner to clean" do + Rails.stubs(:backtrace_cleaner).returns(stub(:clean)) + Rails.backtrace_cleaner.expects(:clean).with(@backtrace, nil) + @test.filter_backtrace(@backtrace) + end + + test "filter backtrace should have the same arity as Test::Unit::Util::BacktraceFilter" do + assert_nothing_raised do + @test.filter_backtrace(@backtrace, '/opt/local/lib') + end + end + end +else + $stderr.puts 'No BacktraceFilter for minitest' end -class BacktraceCleanerFilterTest < ActiveSupport::TestCase +class BacktraceCleanerVendorGemTest < ActiveSupport::TestCase def setup - @test = TestWithBacktrace.new - @backtrace = [ './test/rails/benchmark_test.rb', './test/rails/dependencies.rb', '/opt/local/lib/ruby/kernel.rb' ] + @cleaner = Rails::BacktraceCleaner.new end - - test "test with backtrace should use the rails backtrace cleaner to clean" do - Rails.stubs(:backtrace_cleaner).returns(stub(:clean)) - Rails.backtrace_cleaner.expects(:clean).with(@backtrace, nil) - @test.filter_backtrace(@backtrace) + + 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 - - test "filter backtrace should have the same arity as Test::Unit::Util::BacktraceFilter" do - assert_nothing_raised do - @test.filter_backtrace(@backtrace, '/opt/local/lib') + + 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
\ No newline at end of file + + 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] + end + +end diff --git a/railties/test/boot_test.rb b/railties/test/boot_test.rb index 16776af098..08fcc82e6f 100644 --- a/railties/test/boot_test.rb +++ b/railties/test/boot_test.rb @@ -62,6 +62,8 @@ class VendorBootTest < Test::Unit::TestCase def test_load_initializer_requires_from_vendor_rails boot = VendorBoot.new boot.expects(:require).with("#{RAILS_ROOT}/vendor/rails/railties/lib/initializer") + Rails::Initializer.expects(:run).with(:install_gem_spec_stubs) + Rails::GemDependency.expects(:add_frozen_gem_path) boot.load_initializer end end diff --git a/railties/test/console_app_test.rb b/railties/test/console_app_test.rb index 7a5de5af8f..f11de087e3 100644 --- a/railties/test/console_app_test.rb +++ b/railties/test/console_app_test.rb @@ -11,30 +11,32 @@ require 'dispatcher' require 'console_app' # console_app sets Test::Unit.run to work around the at_exit hook in test/unit, which kills IRB -Test::Unit.run = false - -class ConsoleAppTest < Test::Unit::TestCase - def test_app_method_should_return_integration_session - assert_nothing_thrown do - console_session = app - assert_not_nil console_session - assert_instance_of ActionController::Integration::Session, - console_session +if Test::Unit.respond_to?(:run=) + Test::Unit.run = false + + class ConsoleAppTest < Test::Unit::TestCase + def test_app_method_should_return_integration_session + assert_nothing_thrown do + console_session = app + assert_not_nil console_session + assert_instance_of ActionController::Integration::Session, + console_session + end end - end - def test_reload_should_fire_preparation_callbacks - a = b = c = nil + def test_reload_should_fire_preparation_callbacks + a = b = c = nil - Dispatcher.to_prepare { a = b = c = 1 } - Dispatcher.to_prepare { b = c = 2 } - Dispatcher.to_prepare { c = 3 } - ActionController::Routing::Routes.expects(:reload) + Dispatcher.to_prepare { a = b = c = 1 } + Dispatcher.to_prepare { b = c = 2 } + Dispatcher.to_prepare { c = 3 } + ActionController::Routing::Routes.expects(:reload) - reload! + reload! - assert_equal 1, a - assert_equal 2, b - assert_equal 3, c + assert_equal 1, a + assert_equal 2, b + assert_equal 3, c + end end end diff --git a/railties/test/fixtures/metal/multiplemetals/app/metal/metal_a.rb b/railties/test/fixtures/metal/multiplemetals/app/metal/metal_a.rb new file mode 100644 index 0000000000..2d373ce422 --- /dev/null +++ b/railties/test/fixtures/metal/multiplemetals/app/metal/metal_a.rb @@ -0,0 +1,5 @@ +class MetalA < Rails::Rack::Metal + def self.call(env) + [200, { "Content-Type" => "text/html"}, ["Hi"]] + end +end diff --git a/railties/test/fixtures/metal/multiplemetals/app/metal/metal_b.rb b/railties/test/fixtures/metal/multiplemetals/app/metal/metal_b.rb new file mode 100644 index 0000000000..a8bbf3fd60 --- /dev/null +++ b/railties/test/fixtures/metal/multiplemetals/app/metal/metal_b.rb @@ -0,0 +1,5 @@ +class MetalB < Rails::Rack::Metal + def self.call(env) + [200, { "Content-Type" => "text/html"}, ["Hi"]] + end +end diff --git a/railties/test/fixtures/metal/pluralmetal/app/metal/legacy_routes.rb b/railties/test/fixtures/metal/pluralmetal/app/metal/legacy_routes.rb new file mode 100644 index 0000000000..0cd3737c32 --- /dev/null +++ b/railties/test/fixtures/metal/pluralmetal/app/metal/legacy_routes.rb @@ -0,0 +1,5 @@ +class LegacyRoutes < Rails::Rack::Metal + def self.call(env) + [301, { "Location" => "http://example.com"}, []] + end +end diff --git a/railties/test/fixtures/metal/singlemetal/app/metal/foo_metal.rb b/railties/test/fixtures/metal/singlemetal/app/metal/foo_metal.rb new file mode 100644 index 0000000000..5f5b087592 --- /dev/null +++ b/railties/test/fixtures/metal/singlemetal/app/metal/foo_metal.rb @@ -0,0 +1,5 @@ +class FooMetal < Rails::Rack::Metal + def self.call(env) + [200, { "Content-Type" => "text/html"}, ["Hi"]] + end +end diff --git a/railties/test/fixtures/metal/subfolders/app/metal/Folder/metal_a.rb b/railties/test/fixtures/metal/subfolders/app/metal/Folder/metal_a.rb new file mode 100644 index 0000000000..25b3bb0abc --- /dev/null +++ b/railties/test/fixtures/metal/subfolders/app/metal/Folder/metal_a.rb @@ -0,0 +1,7 @@ +module Folder + class MetalA < Rails::Rack::Metal + def self.call(env) + [200, { "Content-Type" => "text/html"}, ["Hi"]] + end + end +end diff --git a/railties/test/fixtures/metal/subfolders/app/metal/Folder/metal_b.rb b/railties/test/fixtures/metal/subfolders/app/metal/Folder/metal_b.rb new file mode 100644 index 0000000000..7583363f71 --- /dev/null +++ b/railties/test/fixtures/metal/subfolders/app/metal/Folder/metal_b.rb @@ -0,0 +1,7 @@ +module Folder + class MetalB < Rails::Rack::Metal + def self.call(env) + [200, { "Content-Type" => "text/html"}, ["Hi"]] + end + end +end diff --git a/railties/test/fixtures/plugins/engines/engine/app/metal/engine_metal.rb b/railties/test/fixtures/plugins/engines/engine/app/metal/engine_metal.rb new file mode 100644 index 0000000000..d67a127ca7 --- /dev/null +++ b/railties/test/fixtures/plugins/engines/engine/app/metal/engine_metal.rb @@ -0,0 +1,10 @@ +class EngineMetal + def self.call(env) + if env["PATH_INFO"] =~ /^\/metal/ + [200, {"Content-Type" => "text/html"}, ["Engine metal"]] + else + [404, {"Content-Type" => "text/html"}, ["Not Found"]] + end + end +end + diff --git a/railties/test/fixtures/plugins/engines/engine/init.rb b/railties/test/fixtures/plugins/engines/engine/init.rb index f4b00c0fa4..64e9ae6c30 100644 --- a/railties/test/fixtures/plugins/engines/engine/init.rb +++ b/railties/test/fixtures/plugins/engines/engine/init.rb @@ -1,3 +1,3 @@ # My app/models dir must be in the load path. require 'engine_model' -raise 'missing model from my app/models dir' unless defined?(EngineModel) +raise LoadError, 'missing model from my app/models dir' unless defined?(EngineModel) diff --git a/railties/test/fixtures/public/foo/bar.html b/railties/test/fixtures/public/foo/bar.html new file mode 100644 index 0000000000..9a35646205 --- /dev/null +++ b/railties/test/fixtures/public/foo/bar.html @@ -0,0 +1 @@ +/foo/bar.html
\ No newline at end of file diff --git a/railties/test/fixtures/public/foo/index.html b/railties/test/fixtures/public/foo/index.html new file mode 100644 index 0000000000..497a2e898f --- /dev/null +++ b/railties/test/fixtures/public/foo/index.html @@ -0,0 +1 @@ +/foo/index.html
\ No newline at end of file diff --git a/railties/test/fixtures/public/index.html b/railties/test/fixtures/public/index.html new file mode 100644 index 0000000000..525950ba6b --- /dev/null +++ b/railties/test/fixtures/public/index.html @@ -0,0 +1 @@ +/index.html
\ No newline at end of file diff --git a/railties/test/gem_dependency_test.rb b/railties/test/gem_dependency_test.rb index 9cb02fcd06..189ad02b76 100644 --- a/railties/test/gem_dependency_test.rb +++ b/railties/test/gem_dependency_test.rb @@ -46,31 +46,34 @@ class GemDependencyTest < Test::Unit::TestCase end def test_gem_adds_load_paths - @gem.expects(:gem).with(Gem::Dependency.new(@gem.name, nil)) + @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::Dependency.new(@gem_with_version.name, @gem_with_version.requirement.to_s)) + @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::Dependency.new(@gem.name, nil)) + @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::Dependency.new(@gem_with_lib.name, nil)) + @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::Dependency.new(@gem_without_load.name, nil)) + @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 @@ -132,8 +135,8 @@ class GemDependencyTest < Test::Unit::TestCase dummy_gem = Rails::GemDependency.new "dummy-gem-g" dummy_gem.add_load_paths dummy_gem.load - assert dummy_gem.loaded? - assert_equal 2, dummy_gem.dependencies.size + 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 diff --git a/railties/test/generators/rails_template_runner_test.rb b/railties/test/generators/rails_template_runner_test.rb index 56afc85eba..2da6bd59b5 100644 --- a/railties/test/generators/rails_template_runner_test.rb +++ b/railties/test/generators/rails_template_runner_test.rb @@ -82,6 +82,22 @@ class RailsTemplateRunnerTest < GeneratorTestCase assert_rails_initializer_includes("config.gem 'mislav-will-paginate', :lib => 'will-paginate', :source => 'http://gems.github.com'") end + def test_gem_with_env_string_should_put_gem_dependency_in_specified_environment + run_template_method(:gem, 'rspec', :env => 'test') + assert_generated_file_with_data('config/environments/test.rb', "config.gem 'rspec'", 'test') + end + + def test_gem_with_env_array_should_put_gem_dependency_in_specified_environments + run_template_method(:gem, 'quietbacktrace', :env => %w[ development test ]) + assert_generated_file_with_data('config/environments/development.rb', "config.gem 'quietbacktrace'") + assert_generated_file_with_data('config/environments/test.rb', "config.gem 'quietbacktrace'") + end + + def test_gem_with_lib_option_set_to_false_should_put_gem_dependency_in_enviroment_correctly + run_template_method(:gem, 'mislav-will-paginate', :lib => false, :source => 'http://gems.github.com') + assert_rails_initializer_includes("config.gem 'mislav-will-paginate', :lib => false, :source => 'http://gems.github.com'") + end + def test_environment_should_include_data_in_environment_initializer_block load_paths = 'config.load_paths += %w["#{RAILS_ROOT}/app/extras"]' run_template_method(:environment, load_paths) diff --git a/railties/test/initializer_test.rb b/railties/test/initializer_test.rb index eb9ec750da..561f7b8b54 100644 --- a/railties/test/initializer_test.rb +++ b/railties/test/initializer_test.rb @@ -1,6 +1,10 @@ require 'abstract_unit' require 'initializer' +require 'action_view' +require 'action_mailer' +require 'active_record' + # Mocks out the configuration module Rails def self.configuration @@ -26,7 +30,6 @@ class Initializer_load_environment_Test < Test::Unit::TestCase ensure $initialize_test_set_from_env = nil end - end class Initializer_eager_loading_Test < Test::Unit::TestCase @@ -234,7 +237,7 @@ class InitializerPluginLoadingTests < Test::Unit::TestCase def test_registering_a_plugin_name_that_does_not_exist_raises_a_load_error only_load_the_following_plugins! [:stubby, :acts_as_a_non_existant_plugin] - assert_raises(LoadError) do + assert_raise(LoadError) do load_plugins! end end @@ -268,7 +271,6 @@ class InitializerPluginLoadingTests < Test::Unit::TestCase assert $LOAD_PATH.include?(File.join(plugin_fixture_path('default/acts/acts_as_chunky_bacon'), 'lib')) end - private def load_plugins! @@ -288,7 +290,7 @@ class InitializerSetupI18nTests < Test::Unit::TestCase Dir.stubs(:[]).returns([ "my/test/locale.yml" ]) assert_equal [ "my/test/locale.yml" ], Rails::Configuration.new.i18n.load_path end - + def test_config_defaults_should_be_added_with_config_settings File.stubs(:exist?).returns(true) Dir.stubs(:[]).returns([ "my/test/locale.yml" ]) @@ -298,7 +300,7 @@ class InitializerSetupI18nTests < Test::Unit::TestCase assert_equal [ "my/test/locale.yml", "my/other/locale.yml" ], config.i18n.load_path end - + def test_config_defaults_and_settings_should_be_added_to_i18n_defaults File.stubs(:exist?).returns(true) Dir.stubs(:[]).returns([ "my/test/locale.yml" ]) @@ -306,17 +308,15 @@ class InitializerSetupI18nTests < Test::Unit::TestCase config = Rails::Configuration.new config.i18n.load_path << "my/other/locale.yml" - # To bring in AV's i18n load path. - require 'action_view' - Rails::Initializer.run(:initialize_i18n, config) assert_equal [ File.expand_path(File.dirname(__FILE__) + "/../../activesupport/lib/active_support/locale/en.yml"), File.expand_path(File.dirname(__FILE__) + "/../../actionpack/lib/action_view/locale/en.yml"), + File.expand_path(File.dirname(__FILE__) + "/../../activerecord/lib/active_record/locale/en.yml"), "my/test/locale.yml", "my/other/locale.yml" ], I18n.load_path.collect { |path| path =~ /^\./ ? File.expand_path(path) : path } end - + def test_setting_another_default_locale config = Rails::Configuration.new config.i18n.default_locale = :de @@ -325,6 +325,69 @@ class InitializerSetupI18nTests < Test::Unit::TestCase end end +class InitializerDatabaseMiddlewareTest < Test::Unit::TestCase + def setup + @config = Rails::Configuration.new + @config.frameworks = [:active_record, :action_controller, :action_view] + end + + def test_initialize_database_middleware_doesnt_perform_anything_when_active_record_not_in_frameworks + @config.frameworks.clear + @config.expects(:middleware).never + Rails::Initializer.run(:initialize_database_middleware, @config) + end + + def test_database_middleware_initializes_when_session_store_is_active_record + store = ActionController::Base.session_store + ActionController::Base.session_store = ActiveRecord::SessionStore + + @config.middleware.expects(:insert_before).with(:"ActiveRecord::SessionStore", ActiveRecord::ConnectionAdapters::ConnectionManagement) + @config.middleware.expects(:insert_before).with(:"ActiveRecord::SessionStore", ActiveRecord::QueryCache) + + Rails::Initializer.run(:initialize_database_middleware, @config) + ensure + ActionController::Base.session_store = store + end + + def test_database_middleware_doesnt_initialize_when_session_store_is_not_active_record + store = ActionController::Base.session_store + ActionController::Base.session_store = ActionController::Session::CookieStore + + # Define the class, so we don't have to actually make it load + eval("class ActiveRecord::ConnectionAdapters::ConnectionManagement; end") + + @config.middleware.expects(:use).with(ActiveRecord::ConnectionAdapters::ConnectionManagement) + @config.middleware.expects(:use).with(ActiveRecord::QueryCache) + + Rails::Initializer.run(:initialize_database_middleware, @config) + ensure + ActionController::Base.session_store = store + end +end + +class InitializerViewPathsTest < Test::Unit::TestCase + def setup + @config = Rails::Configuration.new + @config.frameworks = [:action_view, :action_controller, :action_mailer] + + ActionController::Base.stubs(:view_paths).returns(stub) + ActionMailer::Base.stubs(:view_paths).returns(stub) + end + + def test_load_view_paths_doesnt_perform_anything_when_action_view_not_in_frameworks + @config.frameworks -= [:action_view] + ActionController::Base.view_paths.expects(:load!).never + ActionMailer::Base.view_paths.expects(:load!).never + Rails::Initializer.run(:load_view_paths, @config) + end + + def test_load_view_paths_loads_view_paths + ActionController::Base.view_paths.expects(:load!) + ActionMailer::Base.view_paths.expects(:load!) + Rails::Initializer.run(:load_view_paths, @config) + end +end + class RailsRootTest < Test::Unit::TestCase def test_rails_dot_root_equals_rails_root assert_equal RAILS_ROOT, Rails.root.to_s @@ -333,4 +396,4 @@ class RailsRootTest < Test::Unit::TestCase 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 +end
\ No newline at end of file diff --git a/railties/test/metal_test.rb b/railties/test/metal_test.rb new file mode 100644 index 0000000000..d3d231132b --- /dev/null +++ b/railties/test/metal_test.rb @@ -0,0 +1,72 @@ +require 'abstract_unit' +require 'initializer' + +class MetalTest < Test::Unit::TestCase + def test_metals_should_return_list_of_found_metal_apps + use_appdir("singlemetal") do + assert_equal(["FooMetal"], found_metals_as_string_array) + end + end + + def test_metals_should_respect_class_name_conventions + use_appdir("pluralmetal") do + assert_equal(["LegacyRoutes"], found_metals_as_string_array) + end + end + + def test_metals_should_return_alphabetical_list_of_found_metal_apps + use_appdir("multiplemetals") do + assert_equal(["MetalA", "MetalB"], found_metals_as_string_array) + end + end + + def test_metals_load_order_should_be_overriden_by_requested_metals + use_appdir("multiplemetals") do + Rails::Rack::Metal.requested_metals = ["MetalB", "MetalA"] + assert_equal(["MetalB", "MetalA"], found_metals_as_string_array) + end + end + + def test_metals_not_listed_should_not_load + use_appdir("multiplemetals") do + Rails::Rack::Metal.requested_metals = ["MetalB"] + assert_equal(["MetalB"], found_metals_as_string_array) + end + end + + def test_metal_finding_should_work_with_subfolders + use_appdir("subfolders") do + assert_equal(["Folder::MetalA", "Folder::MetalB"], found_metals_as_string_array) + end + end + + def test_metal_finding_with_requested_metals_should_work_with_subfolders + use_appdir("subfolders") do + Rails::Rack::Metal.requested_metals = ["Folder::MetalB"] + assert_equal(["Folder::MetalB"], found_metals_as_string_array) + end + end + + def test_metal_finding_should_work_with_multiple_metal_paths_in_185_and_below + use_appdir("singlemetal") do + engine_metal_path = "#{File.dirname(__FILE__)}/fixtures/plugins/engines/engine/app/metal" + Rails::Rack::Metal.metal_paths << engine_metal_path + $LOAD_PATH << engine_metal_path + assert_equal(["FooMetal", "EngineMetal"], found_metals_as_string_array) + end + end + + private + + def use_appdir(root) + dir = "#{File.dirname(__FILE__)}/fixtures/metal/#{root}" + Rails::Rack::Metal.metal_paths = ["#{dir}/app/metal"] + Rails::Rack::Metal.requested_metals = nil + $LOAD_PATH << "#{dir}/app/metal" + yield + end + + def found_metals_as_string_array + Rails::Rack::Metal.metals.map { |m| m.to_s } + end +end diff --git a/railties/test/plugin_loader_test.rb b/railties/test/plugin_loader_test.rb index e802b1ace7..b270748dd6 100644 --- a/railties/test/plugin_loader_test.rb +++ b/railties/test/plugin_loader_test.rb @@ -120,7 +120,7 @@ class TestPluginLoader < Test::Unit::TestCase @loader.add_plugin_load_paths - %w( models controllers helpers ).each do |app_part| + %w( models controllers metal helpers ).each do |app_part| assert ActiveSupport::Dependencies.load_paths.include?( File.join(plugin_fixture_path('engines/engine'), 'app', app_part) ), "Couldn't find #{app_part} in load path" @@ -161,4 +161,4 @@ class TestPluginLoader < Test::Unit::TestCase $LOAD_PATH.clear ORIGINAL_LOAD_PATH.each { |path| $LOAD_PATH << path } end -end
\ No newline at end of file +end diff --git a/railties/test/plugin_locator_test.rb b/railties/test/plugin_locator_test.rb index c8404e126e..471d9fc7c3 100644 --- a/railties/test/plugin_locator_test.rb +++ b/railties/test/plugin_locator_test.rb @@ -2,7 +2,7 @@ require 'plugin_test_helper' class PluginLocatorTest < Test::Unit::TestCase def test_should_require_subclasses_to_implement_the_plugins_method - assert_raises(RuntimeError) do + assert_raise(RuntimeError) do Rails::Plugin::Locator.new(nil).plugins end end diff --git a/railties/test/plugin_test.rb b/railties/test/plugin_test.rb index 5500711df8..a6c390a45a 100644 --- a/railties/test/plugin_test.rb +++ b/railties/test/plugin_test.rb @@ -52,11 +52,11 @@ class PluginTest < Test::Unit::TestCase plugin_for(@valid_plugin_path).load_paths end - assert_raises(LoadError) do + assert_raise(LoadError) do plugin_for(@empty_plugin_path).load_paths end - assert_raises(LoadError) do + assert_raise(LoadError) do plugin_for('this_is_not_a_plugin_directory').load_paths end end @@ -77,13 +77,13 @@ class PluginTest < Test::Unit::TestCase end # This is an empty path so it raises - assert_raises(LoadError) do + assert_raise(LoadError) do plugin = plugin_for(@empty_plugin_path) plugin.stubs(:evaluate_init_rb) plugin.send(:load, @initializer) end - assert_raises(LoadError) do + assert_raise(LoadError) do plugin = plugin_for('this_is_not_a_plugin_directory') plugin.stubs(:evaluate_init_rb) plugin.send(:load, @initializer) @@ -97,11 +97,11 @@ class PluginTest < Test::Unit::TestCase end # This is an empty path so it raises - assert_raises(LoadError) do + assert_raise(LoadError) do plugin_for(@empty_plugin_path).load_paths end - assert_raises(LoadError) do + assert_raise(LoadError) do plugin_for('this_is_not_a_plugin_directory').load_paths end end diff --git a/railties/test/rack_static_test.rb b/railties/test/rack_static_test.rb new file mode 100644 index 0000000000..ad673f6f19 --- /dev/null +++ b/railties/test/rack_static_test.rb @@ -0,0 +1,46 @@ +require 'abstract_unit' + +require 'action_controller' +require 'rails/rack' + +class RackStaticTest < ActiveSupport::TestCase + def setup + FileUtils.cp_r "#{RAILS_ROOT}/fixtures/public", "#{RAILS_ROOT}/public" + end + + def teardown + FileUtils.rm_rf "#{RAILS_ROOT}/public" + end + + DummyApp = lambda { |env| + [200, {"Content-Type" => "text/plain"}, ["Hello, World!"]] + } + App = Rails::Rack::Static.new(DummyApp) + + test "serves dynamic content" do + assert_equal "Hello, World!", get("/nofile") + end + + test "serves static index at root" do + assert_equal "/index.html", get("/index.html") + assert_equal "/index.html", get("/index") + assert_equal "/index.html", get("/") + end + + test "serves static file in directory" do + assert_equal "/foo/bar.html", get("/foo/bar.html") + assert_equal "/foo/bar.html", get("/foo/bar/") + assert_equal "/foo/bar.html", get("/foo/bar") + end + + test "serves static index file in directory" do + assert_equal "/foo/index.html", get("/foo/index.html") + assert_equal "/foo/index.html", get("/foo/") + assert_equal "/foo/index.html", get("/foo") + end + + private + def get(path) + Rack::MockRequest.new(App).request("GET", path).body + end +end diff --git a/railties/test/vendor/gems/dummy-gem-g-1.0.0/.specification b/railties/test/vendor/gems/dummy-gem-g-1.0.0/.specification index 5483048c1c..27e29912a6 100644 --- a/railties/test/vendor/gems/dummy-gem-g-1.0.0/.specification +++ b/railties/test/vendor/gems/dummy-gem-g-1.0.0/.specification @@ -9,7 +9,7 @@ date: 2008-10-03 00:00:00 -04:00 dependencies: - !ruby/object:Gem::Dependency name: dummy-gem-f - type: :development + type: :runtime version_requirement: version_requirements: !ruby/object:Gem::Requirement requirements: |