diff options
Diffstat (limited to 'railties/test')
| -rw-r--r-- | railties/test/application/configuration_test.rb | 4 | ||||
| -rw-r--r-- | railties/test/application/console_test.rb | 5 | ||||
| -rw-r--r-- | railties/test/application/generators_test.rb | 2 | ||||
| -rw-r--r-- | railties/test/application/paths_test.rb | 28 | ||||
| -rw-r--r-- | railties/test/generators/app_generator_test.rb | 34 | ||||
| -rw-r--r-- | railties/test/generators/namespaced_generators_test.rb | 4 | ||||
| -rw-r--r-- | railties/test/paths_test.rb | 268 | ||||
| -rw-r--r-- | railties/test/railties/engine_test.rb | 80 | ||||
| -rw-r--r-- | railties/test/railties/mounted_engine_test.rb | 2 | ||||
| -rw-r--r-- | railties/test/railties/plugin_test.rb | 2 | ||||
| -rw-r--r-- | railties/test/railties/railtie_test.rb | 24 | ||||
| -rw-r--r-- | railties/test/railties/shared_tests.rb | 65 | 
12 files changed, 292 insertions, 226 deletions
| diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index 7403d16cf4..b8d0854286 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -42,7 +42,7 @@ module ApplicationTests      test "Rails::Application responds to paths" do        require "#{app_path}/config/environment"        assert_respond_to AppTemplate::Application, :paths -      assert_equal AppTemplate::Application.paths.app.views.to_a, ["#{app_path}/app/views"] +      assert_equal AppTemplate::Application.paths["app/views"].expanded, ["#{app_path}/app/views"]      end      test "the application root is set correctly" do @@ -180,7 +180,7 @@ module ApplicationTests      test "config.paths.public sets Rails.public_path" do        add_to_config <<-RUBY -        config.paths.public = "somewhere" +        config.paths["public"] = "somewhere"        RUBY        require "#{app_path}/config/application" diff --git a/railties/test/application/console_test.rb b/railties/test/application/console_test.rb index 25b4a21902..d4159dd0fd 100644 --- a/railties/test/application/console_test.rb +++ b/railties/test/application/console_test.rb @@ -1,7 +1,7 @@  require 'isolation/abstract_unit'  class ConsoleTest < Test::Unit::TestCase -  include ActiveSupport::Testing::Isolation +  include ActiveSupport::Testing::Isolation      def setup      build_app @@ -14,16 +14,15 @@ class ConsoleTest < Test::Unit::TestCase    end    def test_app_method_should_return_integration_session +    TestHelpers::Rack.send :remove_method, :app      load_environment      console_session = app -    assert_not_nil console_session      assert_instance_of ActionDispatch::Integration::Session, console_session    end    def test_new_session_should_return_integration_session      load_environment      session = new_session -    assert_not_nil session      assert_instance_of ActionDispatch::Integration::Session, session    end diff --git a/railties/test/application/generators_test.rb b/railties/test/application/generators_test.rb index d258625f42..551e966c85 100644 --- a/railties/test/application/generators_test.rb +++ b/railties/test/application/generators_test.rb @@ -69,7 +69,7 @@ module ApplicationTests        assert_equal :rspec, Rails::Generators.options[:rails][:test_framework]        assert_equal "-w", Rails::Generators.aliases[:rails][:test_framework]        assert_equal Hash[:shoulda => :test_unit], Rails::Generators.fallbacks -      assert_equal ["#{app_path}/lib/templates", "some/where"], Rails::Generators.templates_path +      assert_equal ["some/where"], Rails::Generators.templates_path      end      test "generators no color on initialization" do diff --git a/railties/test/application/paths_test.rb b/railties/test/application/paths_test.rb index c98b11556b..b1ff6e9cb1 100644 --- a/railties/test/application/paths_test.rb +++ b/railties/test/application/paths_test.rb @@ -25,7 +25,7 @@ module ApplicationTests      end      def assert_path(paths, *dir) -      assert_equal [root(*dir)], paths.paths +      assert_equal [root(*dir)], paths.expanded      end      def assert_in_load_path(*path) @@ -37,20 +37,20 @@ module ApplicationTests      end      test "booting up Rails yields a valid paths object" do -      assert_path @paths.app.models, "app", "models" -      assert_path @paths.app.helpers, "app", "helpers" -      assert_path @paths.app.views, "app", "views" -      assert_path @paths.lib, "lib" -      assert_path @paths.vendor, "vendor" -      assert_path @paths.vendor.plugins, "vendor", "plugins" -      assert_path @paths.tmp, "tmp" -      assert_path @paths.tmp.cache, "tmp", "cache" -      assert_path @paths.config, "config" -      assert_path @paths.config.locales, "config", "locales", "en.yml" -      assert_path @paths.config.environment, "config", "environment.rb" -      assert_path @paths.config.environments, "config", "environments", "development.rb" +      assert_path @paths["app/models"],          "app/models" +      assert_path @paths["app/helpers"],         "app/helpers" +      assert_path @paths["app/views"],           "app/views" +      assert_path @paths["lib"],                 "lib" +      assert_path @paths["vendor"],              "vendor" +      assert_path @paths["vendor/plugins"],      "vendor/plugins" +      assert_path @paths["tmp"],                 "tmp" +      assert_path @paths["tmp/cache"],           "tmp/cache" +      assert_path @paths["config"],              "config" +      assert_path @paths["config/locales"],      "config/locales/en.yml" +      assert_path @paths["config/environment"],  "config/environment.rb" +      assert_path @paths["config/environments"], "config/environments/development.rb" -      assert_equal root("app", "controllers"), @paths.app.controllers.to_a.first +      assert_equal root("app", "controllers"), @paths["app/controllers"].expanded.first      end      test "booting up Rails yields a list of paths that are eager" do diff --git a/railties/test/generators/app_generator_test.rb b/railties/test/generators/app_generator_test.rb index 3653b067c8..c7339cb8d2 100644 --- a/railties/test/generators/app_generator_test.rb +++ b/railties/test/generators/app_generator_test.rb @@ -165,9 +165,13 @@ class AppGeneratorTest < Rails::Generators::TestCase      assert_file "Gemfile", /^gem\s+["']mysql2["']$/    end -  def test_config_database_is_not_added_if_skip_active_record_is_given +  def test_generator_if_skip_active_record_is_given      run_generator [destination_root, "--skip-active-record"]      assert_no_file "config/database.yml" +    assert_file "test/test_helper.rb" do |helper_content| +      assert_no_match /fixtures :all/, helper_content +    end +    assert_file "test/performance/browsing_test.rb"    end    def test_active_record_is_removed_from_frameworks_if_skip_active_record_is_given @@ -183,14 +187,34 @@ class AppGeneratorTest < Rails::Generators::TestCase      assert_file "public/javascripts/rails.js"      assert_file "test"    end - -  def test_prototype_and_test_unit_are_skipped_if_required -    run_generator [destination_root, "--skip-prototype", "--skip-test-unit"] +   +  def test_test_unit_is_skipped_if_required +    run_generator [destination_root, "--skip-test-unit"] +    assert_no_file "test"     +  end +   +  def test_javascript_is_skipped_if_required +    run_generator [destination_root, "--skip-javascript"]      assert_file "config/application.rb", /^\s+config\.action_view\.javascript_expansions\[:defaults\]\s+=\s+%w\(\)/      assert_file "public/javascripts/application.js"      assert_no_file "public/javascripts/prototype.js"      assert_no_file "public/javascripts/rails.js" -    assert_no_file "test" +  end +   +  def test_config_prototype_javascript_library +    run_generator [destination_root, "-j", "prototype"] +    assert_file "config/application.rb", /#\s+config\.action_view\.javascript_expansions\[:defaults\]\s+=\s+%w\(jquery rails\)/ +    assert_file "public/javascripts/application.js" +    assert_file "public/javascripts/prototype.js" +    assert_file "public/javascripts/rails.js", /prototype/ +  end +   +  def test_config_jquery_javascript_library +    run_generator [destination_root, "-j", "jquery"] +    assert_file "config/application.rb", /^\s+config\.action_view\.javascript_expansions\[:defaults\]\s+=\s+%w\(jquery rails\)/ +    assert_file "public/javascripts/application.js" +    assert_file "public/javascripts/jquery.js" +    assert_file "public/javascripts/rails.js", /jQuery/    end    def test_shebang_is_added_to_rails_file diff --git a/railties/test/generators/namespaced_generators_test.rb b/railties/test/generators/namespaced_generators_test.rb index 38b95a49ac..d1190fd17d 100644 --- a/railties/test/generators/namespaced_generators_test.rb +++ b/railties/test/generators/namespaced_generators_test.rb @@ -6,14 +6,14 @@ require 'rails/generators/mailer/mailer_generator'  class NamespacedGeneratorTestCase < Rails::Generators::TestCase    def setup -    TestApp::Application.namespace(TestApp) +    TestApp::Application.isolate_namespace(TestApp)    end    def teardown      if TestApp.respond_to?(:_railtie)        TestApp.singleton_class.send(:undef_method, :_railtie)        TestApp.singleton_class.send(:undef_method, :table_name_prefix) -      TestApp::Application.namespaced = false +      TestApp::Application.isolated = false      end    end  end diff --git a/railties/test/paths_test.rb b/railties/test/paths_test.rb index 80fae8c543..6e4e3446b3 100644 --- a/railties/test/paths_test.rb +++ b/railties/test/paths_test.rb @@ -20,234 +20,264 @@ class PathsTest < ActiveSupport::TestCase    test "a paths object initialized with nil can be updated" do      root = Rails::Paths::Root.new(nil) -    root.app = "app" +    root.add "app"      root.path = "/root" -    assert_equal ["/root/app"], root.app.to_a +    assert_equal ["app"], root["app"] +    assert_equal ["/root/app"], root["app"].to_a    end    test "creating a root level path" do -    @root.app = "/foo/bar" -    assert_equal ["/foo/bar"], @root.app.to_a +    @root.add "app" +    assert_equal ["/foo/bar/app"], @root["app"].to_a +  end + +  test "creating a root level path with options" do +    @root.add "app", :with => "/foo/bar" +    assert_equal ["/foo/bar"], @root["app"].to_a    end    test "raises exception if root path never set" do      root = Rails::Paths::Root.new(nil) -    root.app = "app" +    root.add "app"      assert_raises RuntimeError do -      root.app.to_a +      root["app"].to_a      end    end -  test "creating a root level path without assignment" do -    @root.app "/foo/bar" -    assert_equal ["/foo/bar"], @root.app.to_a -  end - -  test "trying to access a path that does not exist raises NoMethodError" do -    assert_raises(NoMethodError) { @root.app } -  end - -  test "relative paths are relative to the paths root" do -    @root.app = "app" -    assert_equal ["/foo/bar/app"], @root.app.to_a -  end - -  test "relative paths are relative to the paths root without assignment" do -    @root.app "app" -    assert_equal ["/foo/bar/app"], @root.app.to_a -  end -    test "creating a child level path" do -    @root.app        = "/foo/bar" -    @root.app.models = "/foo/bar/baz" -    assert_equal ["/foo/bar/baz"], @root.app.models.to_a +    @root.add "app" +    @root.add "app/models" +    assert_equal ["/foo/bar/app/models"], @root["app/models"].to_a    end -  test "creating a child level path without assignment" do -    @root.app        = "/foo/bar" -    @root.app.models   "/foo/bar/baz" -    assert_equal ["/foo/bar/baz"], @root.app.models.to_a +  test "creating a child level path with option" do +    @root.add "app" +    @root.add "app/models", :with => "/foo/bar/baz" +    assert_equal ["/foo/bar/baz"], @root["app/models"].to_a    end    test "child level paths are relative from the root" do -    @root.app        = "/app" -    @root.app.models = "baz" - -    assert_equal ["/foo/bar/baz"], @root.app.models.to_a +    @root.add "app" +    @root.add "app/models", :with => "baz" +    assert_equal ["/foo/bar/baz"], @root["app/models"].to_a    end    test "adding multiple physical paths as an array" do -    @root.app = ["/app", "/app2"] -    assert_equal ["/app", "/app2"], @root.app.to_a -  end - -  test "adding multiple physical paths as an array without assignment" do -    @root.app "/app", "/app2" -    assert_equal ["/app", "/app2"], @root.app.to_a +    @root.add "app", :with => ["/app", "/app2"] +    assert_equal ["/app", "/app2"], @root["app"].to_a    end    test "adding multiple physical paths using #push" do -    @root.app = "/app" -    @root.app.push "/app2" -    assert_equal ["/app", "/app2"], @root.app.to_a +    @root.add "app" +    @root["app"].push "app2" +    assert_equal ["/foo/bar/app", "/foo/bar/app2"], @root["app"].to_a    end    test "adding multiple physical paths using <<" do -    @root.app = "/app" -    @root.app << "/app2" -    assert_equal ["/app", "/app2"], @root.app.to_a +    @root.add "app" +    @root["app"] << "app2" +    assert_equal ["/foo/bar/app", "/foo/bar/app2"], @root["app"].to_a    end    test "adding multiple physical paths using concat" do -    @root.app = "/app" -    @root.app.concat ["/app2", "/app3"] -    assert_equal ["/app", "/app2", "/app3"], @root.app.to_a +    @root.add "app" +    @root["app"].concat ["app2", "/app3"] +    assert_equal ["/foo/bar/app", "/foo/bar/app2", "/app3"], @root["app"].to_a    end    test "adding multiple physical paths using #unshift" do -    @root.app = "/app" -    @root.app.unshift "/app2" -    assert_equal ["/app2", "/app"], @root.app.to_a +    @root.add "app" +    @root["app"].unshift "app2" +    assert_equal ["/foo/bar/app2", "/foo/bar/app"], @root["app"].to_a    end    test "the root can only have one physical path" do      assert_raise(RuntimeError) { Rails::Paths::Root.new(["/fiz", "/biz"]) } -    assert_raise(RuntimeError) { @root.push "/biz"    } -    assert_raise(RuntimeError) { @root.unshift "/biz" } -    assert_raise(RuntimeError) { @root.concat ["/biz"]} -    assert_raise(RuntimeError) { @root << "/biz"      }    end    test "it is possible to add a path that should be autoloaded only once" do -    @root.app = "/app" -    @root.app.autoload_once! -    assert @root.app.autoload_once? -    assert @root.autoload_once.include?(@root.app.paths.first) +    @root.add "app", :with => "/app" +    @root["app"].autoload_once! +    assert @root["app"].autoload_once? +    assert @root.autoload_once.include?(@root["app"].expanded.first)    end    test "it is possible to remove a path that should be autoloaded only once" do -    @root.app = "/app" -    @root.app.autoload_once! -    assert @root.app.autoload_once? +    @root["app"] = "/app" +    @root["app"].autoload_once! +    assert @root["app"].autoload_once? -    @root.app.skip_autoload_once! -    assert !@root.app.autoload_once? -    assert !@root.autoload_once.include?(@root.app.paths.first) +    @root["app"].skip_autoload_once! +    assert !@root["app"].autoload_once? +    assert !@root.autoload_once.include?(@root["app"].expanded.first)    end    test "it is possible to add a path without assignment and specify it should be loaded only once" do -    @root.app "/app", :autoload_once => true -    assert @root.app.autoload_once? +    @root.add "app", :with => "/app", :autoload_once => true +    assert @root["app"].autoload_once?      assert @root.autoload_once.include?("/app")    end    test "it is possible to add multiple paths without assignment and specify it should be loaded only once" do -    @root.app "/app", "/app2", :autoload_once => true -    assert @root.app.autoload_once? +    @root.add "app", :with => ["/app", "/app2"], :autoload_once => true +    assert @root["app"].autoload_once?      assert @root.autoload_once.include?("/app")      assert @root.autoload_once.include?("/app2")    end    test "making a path autoload_once more than once only includes it once in @root.load_once" do -    @root.app = "/app" -    @root.app.autoload_once! -    @root.app.autoload_once! -    assert_equal 1, @root.autoload_once.select {|p| p == @root.app.paths.first }.size +    @root["app"] = "/app" +    @root["app"].autoload_once! +    @root["app"].autoload_once! +    assert_equal 1, @root.autoload_once.select {|p| p == @root["app"].expanded.first }.size    end    test "paths added to a load_once path should be added to the autoload_once collection" do -    @root.app = "/app" -    @root.app.autoload_once! -    @root.app << "/app2" +    @root["app"] = "/app" +    @root["app"].autoload_once! +    @root["app"] << "/app2"      assert_equal 2, @root.autoload_once.size    end    test "it is possible to mark a path as eager loaded" do -    @root.app = "/app" -    @root.app.eager_load! -    assert @root.app.eager_load? -    assert @root.eager_load.include?(@root.app.paths.first) +    @root["app"] = "/app" +    @root["app"].eager_load! +    assert @root["app"].eager_load? +    assert @root.eager_load.include?(@root["app"].to_a.first)    end    test "it is possible to skip a path from eager loading" do -    @root.app = "/app" -    @root.app.eager_load! -    assert @root.app.eager_load? +    @root["app"] = "/app" +    @root["app"].eager_load! +    assert @root["app"].eager_load? -    @root.app.skip_eager_load! -    assert !@root.app.eager_load? -    assert !@root.eager_load.include?(@root.app.paths.first) +    @root["app"].skip_eager_load! +    assert !@root["app"].eager_load? +    assert !@root.eager_load.include?(@root["app"].to_a.first)    end    test "it is possible to add a path without assignment and mark it as eager" do -    @root.app "/app", :eager_load => true -    assert @root.app.eager_load? +    @root.add "app", :with => "/app", :eager_load => true +    assert @root["app"].eager_load?      assert @root.eager_load.include?("/app")    end    test "it is possible to add multiple paths without assignment and mark them as eager" do -    @root.app "/app", "/app2", :eager_load => true -    assert @root.app.eager_load? +    @root.add "app", :with => ["/app", "/app2"], :eager_load => true +    assert @root["app"].eager_load?      assert @root.eager_load.include?("/app")      assert @root.eager_load.include?("/app2")    end    test "it is possible to create a path without assignment and mark it both as eager and load once" do -    @root.app "/app", :eager_load => true, :autoload_once => true -    assert @root.app.eager_load? -    assert @root.app.autoload_once? +    @root.add "app", :with => "/app", :eager_load => true, :autoload_once => true +    assert @root["app"].eager_load? +    assert @root["app"].autoload_once?      assert @root.eager_load.include?("/app")      assert @root.autoload_once.include?("/app")    end    test "making a path eager more than once only includes it once in @root.eager_paths" do -    @root.app = "/app" -    @root.app.eager_load! -    @root.app.eager_load! -    assert_equal 1, @root.eager_load.select {|p| p == @root.app.paths.first }.size +    @root["app"] = "/app" +    @root["app"].eager_load! +    @root["app"].eager_load! +    assert_equal 1, @root.eager_load.select {|p| p == @root["app"].expanded.first }.size    end    test "paths added to a eager_load path should be added to the eager_load collection" do -    @root.app = "/app" -    @root.app.eager_load! -    @root.app << "/app2" +    @root["app"] = "/app" +    @root["app"].eager_load! +    @root["app"] << "/app2"      assert_equal 2, @root.eager_load.size    end    test "it should be possible to add a path's default glob" do -    @root.app = "/app" -    @root.app.glob = "*.rb" -    assert_equal "*.rb", @root.app.glob +    @root["app"] = "/app" +    @root["app"].glob = "*.rb" +    assert_equal "*.rb", @root["app"].glob    end    test "it should be possible to override a path's default glob without assignment" do -    @root.app "/app", :glob => "*.rb" -    assert_equal "*.rb", @root.app.glob +    @root.add "app", :with => "/app", :glob => "*.rb" +    assert_equal "*.rb", @root["app"].glob    end    test "a path can be added to the load path" do -    @root.app = "app" -    @root.app.load_path! -    @root.app.models = "app/models" +    @root["app"] = "app" +    @root["app"].load_path! +    @root["app/models"] = "app/models"      assert_equal ["/foo/bar/app"], @root.load_paths    end    test "a path can be added to the load path on creation" do -    @root.app "/app", :load_path => true -    assert @root.app.load_path? +    @root.add "app", :with => "/app", :load_path => true +    assert @root["app"].load_path?      assert_equal ["/app"], @root.load_paths    end    test "a path can be marked as autoload path" do -    @root.app = "app" -    @root.app.autoload! -    @root.app.models = "app/models" +    @root["app"] = "app" +    @root["app"].autoload! +    @root["app/models"] = "app/models"      assert_equal ["/foo/bar/app"], @root.autoload_paths    end    test "a path can be marked as autoload on creation" do -    @root.app "/app", :autoload => true -    assert @root.app.autoload? +    @root.add "app", :with => "/app", :autoload => true +    assert @root["app"].autoload?      assert_equal ["/app"], @root.autoload_paths    end + +  # Deprecated API tests + +  test "reading a root level path with assignment" do +    @root.add "app" +    assert_deprecated do +      assert_equal ["/foo/bar/app"], @root.app.to_a +    end +  end + +  test "creating a root level path with assignment" do +    assert_deprecated do +      @root.app = "/foo/bar" +    end +    assert_equal ["/foo/bar"], @root["app"].to_a +  end + +  test "creating a root level path without assignment" do +    assert_deprecated do +      @root.app "/foo/bar" +    end +    assert_equal ["/foo/bar"], @root["app"].to_a +  end + +  test "reading a nested level path with assignment" do +    @root.add "app" +    @root.add "app/model" +    assert_deprecated do +      assert_equal ["/foo/bar/app/model"], @root.app.model.to_a +    end +  end + +  test "creating a nested level path with assignment" do +    @root.add "app" +    assert_deprecated do +      @root.app.model = "/foo/bar" +    end +    assert_equal ["/foo/bar"], @root["app/model"].to_a +  end + +  test "creating a nested level path without assignment" do +    @root.add "app" +    assert_deprecated do +      @root.app.model "/foo/bar" +    end +    assert_equal ["/foo/bar"], @root["app/model"].to_a +  end + +  test "trying to access a path that does not exist raises NoMethodError" do +    assert_deprecated do +      assert_raises(NoMethodError) { @root.app } +    end +  end  end diff --git a/railties/test/railties/engine_test.rb b/railties/test/railties/engine_test.rb index 89262aeaae..4b52260ecc 100644 --- a/railties/test/railties/engine_test.rb +++ b/railties/test/railties/engine_test.rb @@ -62,17 +62,18 @@ module RailtiesTest        def call(env)          response = @app.call(env) -        response[2].upcase! +        response[2].each { |b| b.upcase! }          response        end      end      test "engine is a rack app and can have his own middleware stack" do +      add_to_config("config.action_dispatch.show_exceptions = false") +        @plugin.write "lib/bukkits.rb", <<-RUBY          class Bukkits            class Engine < ::Rails::Engine -            endpoint lambda { |env| [200, {'Content-Type' => 'text/html'}, 'Hello World'] } - +            endpoint lambda { |env| [200, {'Content-Type' => 'text/html'}, ['Hello World']] }              config.middleware.use ::RailtiesTest::EngineTest::Upcaser            end          end @@ -102,7 +103,7 @@ module RailtiesTest        @plugin.write "config/routes.rb", <<-RUBY          Bukkits::Engine.routes.draw do -          match "/foo" => lambda { |env| [200, {'Content-Type' => 'text/html'}, 'foo'] } +          match "/foo" => lambda { |env| [200, {'Content-Type' => 'text/html'}, ['foo']] }          end        RUBY @@ -393,7 +394,7 @@ module RailtiesTest        @plugin.write "lib/bukkits.rb", <<-RUBY          module Bukkits            class Engine < ::Rails::Engine -            namespace Bukkits +            isolate_namespace Bukkits            end          end        RUBY @@ -510,7 +511,7 @@ module RailtiesTest        @plugin.write "lib/bukkits.rb", <<-RUBY          module Bukkits            class Engine < ::Rails::Engine -            namespace Bukkits +            isolate_namespace Bukkits            end          end        RUBY @@ -552,11 +553,11 @@ module RailtiesTest          end        RUBY -      @plugin.write "app/views/bukkits/posts/new.html.erb", <<-RUBY +      @plugin.write "app/views/bukkits/posts/new.html.erb", <<-ERB            <%= form_for(Bukkits::Post.new) do |f| %>              <%= f.text_field :title %>            <% end %> -      RUBY +      ERB        add_to_config("config.action_dispatch.show_exceptions = false") @@ -567,63 +568,6 @@ module RailtiesTest        assert rack_body(response[2]) =~ /name="post\[title\]"/      end -    test "creating symlinks" do -      @plugin.write "lib/bukkits.rb", <<-RUBY -        module Bukkits -          class Engine < ::Rails::Engine -            namespace(Bukkits) -          end -        end -      RUBY - -      @plugin.write "public/hello.txt", "foo" -      @plugin.write "alternate_public/hello.txt", "bar" - -      Dir.chdir(app_path) do -        output = `rake railties:create_symlinks` - -        assert_match /Created symlink/, output -        assert_match /#{app_path}\/public\/bukkits/, output -        assert_match /#{@plugin.path}\/public/, output - -        assert File.symlink?(File.join(app_path, 'public/bukkits')) -        assert_equal "foo\n", File.read(File.join(app_path, 'public/bukkits/hello.txt')) - -        @plugin.write "lib/bukkits.rb", <<-RUBY -          module Bukkits -            class Engine < ::Rails::Engine -              namespace(Bukkits) -              config.paths.public = "#{File.join(@plugin.path, "alternate_public")}" -            end -          end -        RUBY - -        output = `rake railties:create_symlinks` - -        assert_match /Created symlink/, output -        assert_match /#{app_path}\/public\/bukkits/, output -        assert_match /#{@plugin.path}\/alternate_public/, output - -        assert File.symlink?(File.join(app_path, 'public/bukkits')) -        assert_equal "bar\n", File.read(File.join(app_path, 'public/bukkits/hello.txt')) - -        @plugin.write "lib/bukkits.rb", <<-RUBY -          module Bukkits -            class Engine < ::Rails::Engine -              namespace(Bukkits) -              config.paths.public = "#{File.join(@plugin.path, "not_existing")}" -            end -          end -        RUBY - -        FileUtils.rm File.join(app_path, 'public/bukkits') - -        output = `rake railties:create_symlinks` -        assert_no_match /Created symlink/, output -        assert !File.exist?(File.join(app_path, 'public/bukkits')) -      end -    end -      test "loading seed data" do        @plugin.write "db/seeds.rb", <<-RUBY          Bukkits::Engine.config.bukkits_seeds_loaded = true @@ -647,12 +591,12 @@ module RailtiesTest        @plugin.write "lib/bukkits.rb", <<-RUBY          module AppTemplate            class Engine < ::Rails::Engine -            namespace(AppTemplate) +            isolate_namespace(AppTemplate)            end          end        RUBY -      add_to_config "namespace AppTemplate" +      add_to_config "isolate_namespace AppTemplate"        app_file "config/routes.rb", <<-RUBY          AppTemplate::Application.routes.draw do end @@ -685,7 +629,7 @@ module RailtiesTest        @plugin.write "lib/bukkits.rb", <<-RUBY          module Bukkits            class Engine < ::Rails::Engine -            namespace(Bukkits) +            isolate_namespace(Bukkits)            end          end        RUBY diff --git a/railties/test/railties/mounted_engine_test.rb b/railties/test/railties/mounted_engine_test.rb index b52ced92ec..47a4753e78 100644 --- a/railties/test/railties/mounted_engine_test.rb +++ b/railties/test/railties/mounted_engine_test.rb @@ -49,7 +49,7 @@ module ApplicationTests        @plugin.write "lib/blog.rb", <<-RUBY          module Blog            class Engine < ::Rails::Engine -            namespace(Blog) +            isolate_namespace(Blog)            end          end        RUBY diff --git a/railties/test/railties/plugin_test.rb b/railties/test/railties/plugin_test.rb index bae05d6978..c15ac05103 100644 --- a/railties/test/railties/plugin_test.rb +++ b/railties/test/railties/plugin_test.rb @@ -110,7 +110,7 @@ module RailtiesTest          boot_rails        rescue Exception => e          rescued = true -        assert_equal '"bukkits" is a Railtie/Engine and cannot be installed as plugin', e.message +        assert_equal '"bukkits" is a Railtie/Engine and cannot be installed as a plugin', e.message        end        assert rescued, "Expected boot rails to fail" diff --git a/railties/test/railties/railtie_test.rb b/railties/test/railties/railtie_test.rb index 406d5d764f..6d194eecba 100644 --- a/railties/test/railties/railtie_test.rb +++ b/railties/test/railties/railtie_test.rb @@ -103,6 +103,30 @@ module RailtiesTest        assert $ran_block      end +    test "rake_tasks block defined in superclass of railtie is also executed" do +      $ran_block = [] + +      class Rails::Railtie +        rake_tasks do +          $ran_block << railtie_name +        end +      end + +      class MyTie < Rails::Railtie +        railtie_name "my_tie" +      end + +      require "#{app_path}/config/environment" + +      assert_equal [], $ran_block +      require 'rake' +      require 'rake/testtask' +      require 'rake/rdoctask' + +      AppTemplate::Application.load_tasks +      assert $ran_block.include?("my_tie") +    end +      test "generators block is executed when MyApp.load_generators is called" do        $ran_block = false diff --git a/railties/test/railties/shared_tests.rb b/railties/test/railties/shared_tests.rb index 9b62f88fd7..31ba2eaca2 100644 --- a/railties/test/railties/shared_tests.rb +++ b/railties/test/railties/shared_tests.rb @@ -10,6 +10,44 @@ module RailtiesTest        @app ||= Rails.application      end +    def test_install_migrations_and_assets +      @plugin.write "public/javascripts/foo.js", "doSomething()" + +      @plugin.write "db/migrate/1_create_users.rb", <<-RUBY +        class CreateUsers < ActiveRecord::Migration +        end +      RUBY + +      app_file "db/migrate/1_create_sessions.rb", <<-RUBY +        class CreateSessions < ActiveRecord::Migration +        end +      RUBY + +      add_to_config "ActiveRecord::Base.timestamped_migrations = false" + +      Dir.chdir(app_path) do +        `rake bukkits:install` +        assert File.exists?("#{app_path}/db/migrate/2_create_users.rb") +        assert File.exists?(app_path("public/bukkits/javascripts/foo.js")) +      end +    end + +    def test_copying_assets +      @plugin.write "public/javascripts/foo.js", "doSomething()" +      @plugin.write "public/stylesheets/foo.css", "h1 { font-size: 10000px }" +      @plugin.write "public/images/img.png", "" + +      Dir.chdir(app_path) do +        `rake bukkits:install:assets --trace` + +        assert File.exists?(app_path("public/bukkits/javascripts/foo.js")) +        assert_equal "doSomething()\n", File.read(app_path("public/bukkits/javascripts/foo.js")) +        assert File.exists?(app_path("public/bukkits/stylesheets/foo.css")) +        assert_equal "h1 { font-size: 10000px }\n", File.read(app_path("public/bukkits/stylesheets/foo.css")) +        assert File.exists?(app_path("public/bukkits/images/img.png")) +      end +    end +      def test_copying_migrations        @plugin.write "db/migrate/1_create_users.rb", <<-RUBY          class CreateUsers < ActiveRecord::Migration @@ -21,6 +59,11 @@ module RailtiesTest          end        RUBY +      @plugin.write "db/migrate/3_create_sessions.rb", <<-RUBY +        class CreateSessions < ActiveRecord::Migration +        end +      RUBY +        app_file "db/migrate/1_create_sessions.rb", <<-RUBY          class CreateSessions < ActiveRecord::Migration          end @@ -38,24 +81,26 @@ module RailtiesTest        add_to_config "ActiveRecord::Base.timestamped_migrations = false"        Dir.chdir(app_path) do -        output = `rake railties:copy_migrations FROM=bukkits` +        output = `rake bukkits:install:migrations` -        assert File.exists?("#{app_path}/db/migrate/2_create_users.bukkits.rb") -        assert File.exists?("#{app_path}/db/migrate/3_add_last_name_to_users.bukkits.rb") -        assert_match /2_create_users/, output -        assert_match /3_add_last_name_to_users/, output +        assert File.exists?("#{app_path}/db/migrate/2_create_users.rb") +        assert File.exists?("#{app_path}/db/migrate/3_add_last_name_to_users.rb") +        assert_match /Copied migration 2_create_users.rb from bukkits/, output +        assert_match /Copied migration 3_add_last_name_to_users.rb from bukkits/, output +        assert_match /NOTE: Migration 3_create_sessions.rb from bukkits has been skipped/, output          assert_equal 3, Dir["#{app_path}/db/migrate/*.rb"].length -        output = `rake railties:copy_migrations` +        output = `rake railties:install:migrations` -        assert File.exists?("#{app_path}/db/migrate/4_create_yaffles.acts_as_yaffle.rb") -        assert_match /4_create_yaffles/, output +        assert File.exists?("#{app_path}/db/migrate/4_create_yaffles.rb") +        assert_match /NOTE: Migration 3_create_sessions.rb from bukkits has been skipped/, output +        assert_match /Copied migration 4_create_yaffles.rb from acts_as_yaffle/, output +        assert_no_match /2_create_users/, output          migrations_count = Dir["#{app_path}/db/migrate/*.rb"].length -        output = `rake railties:copy_migrations` +        output = `rake railties:install:migrations`          assert_equal migrations_count, Dir["#{app_path}/db/migrate/*.rb"].length -        assert_match /No migrations were copied/, output        end      end | 
