From 6512af232c2d8e284030d859b12f5efa80f0f5ed Mon Sep 17 00:00:00 2001 From: Jon Leighton Date: Mon, 6 Jun 2011 13:54:05 +0100 Subject: [PATCH] Solve the RAILS_ENV problem in the railties tests in a more generic way --- railties/test/application/configuration_test.rb | 4 ++++ railties/test/application/console_test.rb | 4 +--- railties/test/application/generators_test.rb | 4 ++++ railties/test/application/initializers/boot_test.rb | 6 +++++- .../application/initializers/check_ruby_version_test.rb | 4 ++++ railties/test/application/initializers/frameworks_test.rb | 4 +--- railties/test/application/initializers/hooks_test.rb | 4 ++++ railties/test/application/initializers/i18n_test.rb | 4 ++++ railties/test/application/initializers/load_path_test.rb | 4 +--- .../test/application/initializers/notifications_test.rb | 4 ++++ railties/test/application/loading_test.rb | 4 +--- railties/test/application/middleware_test.rb | 4 ++++ railties/test/application/paths_test.rb | 4 ++++ railties/test/application/rackup_test.rb | 4 +--- railties/test/application/rake_test.rb | 4 ++++ railties/test/application/routing_test.rb | 4 ++++ railties/test/application/runner_test.rb | 4 ++++ railties/test/application/test_test.rb | 4 ++++ railties/test/isolation/abstract_unit.rb | 8 ++++++++ railties/test/railties/engine_test.rb | 4 ++++ railties/test/railties/plugin_ordering_test.rb | 6 +++++- railties/test/railties/plugin_test.rb | 4 ++++ railties/test/railties/railtie_test.rb | 4 ++++ 23 files changed, 83 insertions(+), 17 deletions(-) diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index c2c622c32aace..d14636e30e13b 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -35,6 +35,10 @@ def setup FileUtils.rm_rf("#{app_path}/config/environments") end + def teardown + teardown_app + end + def teardown FileUtils.rm_rf(new_app) if File.directory?(new_app) end diff --git a/railties/test/application/console_test.rb b/railties/test/application/console_test.rb index 6234bb73a0ae7..749b021b48b8d 100644 --- a/railties/test/application/console_test.rb +++ b/railties/test/application/console_test.rb @@ -4,14 +4,12 @@ class ConsoleTest < Test::Unit::TestCase include ActiveSupport::Testing::Isolation def setup - @prev_rails_env = ENV['RAILS_ENV'] - ENV['RAILS_ENV'] = 'development' build_app boot_rails end def teardown - ENV['RAILS_ENV'] = @prev_rails_env + teardown_app end def load_environment(sandbox = false) diff --git a/railties/test/application/generators_test.rb b/railties/test/application/generators_test.rb index d258625f42355..40efab05c9a0f 100644 --- a/railties/test/application/generators_test.rb +++ b/railties/test/application/generators_test.rb @@ -9,6 +9,10 @@ def setup boot_rails end + def teardown + teardown_app + end + def app_const @app_const ||= Class.new(Rails::Application) end diff --git a/railties/test/application/initializers/boot_test.rb b/railties/test/application/initializers/boot_test.rb index 5ec562f12f2db..b1e01dc13ff26 100644 --- a/railties/test/application/initializers/boot_test.rb +++ b/railties/test/application/initializers/boot_test.rb @@ -9,8 +9,12 @@ def setup # boot_rails end + def teardown + # teardown_app + end + test "booting rails sets the load paths correctly" do # This test is pending reworking the boot process end end -end \ No newline at end of file +end diff --git a/railties/test/application/initializers/check_ruby_version_test.rb b/railties/test/application/initializers/check_ruby_version_test.rb index 5b6196307d62f..df7e9696a90db 100644 --- a/railties/test/application/initializers/check_ruby_version_test.rb +++ b/railties/test/application/initializers/check_ruby_version_test.rb @@ -9,6 +9,10 @@ def setup boot_rails end + def teardown + teardown_app + end + test "rails initializes with ruby 1.8.7 or later, except for 1.9.1" do if RUBY_VERSION < '1.8.7' assert_rails_does_not_boot diff --git a/railties/test/application/initializers/frameworks_test.rb b/railties/test/application/initializers/frameworks_test.rb index 30f2975ed2c57..54959d8aab88b 100644 --- a/railties/test/application/initializers/frameworks_test.rb +++ b/railties/test/application/initializers/frameworks_test.rb @@ -5,15 +5,13 @@ class FrameworlsTest < Test::Unit::TestCase include ActiveSupport::Testing::Isolation def setup - @prev_rails_env = ENV['RAILS_ENV'] - ENV['RAILS_ENV'] = 'development' build_app boot_rails FileUtils.rm_rf "#{app_path}/config/environments" end def teardown - ENV['RAILS_ENV'] = @prev_rails_env + teardown_app end # AC & AM diff --git a/railties/test/application/initializers/hooks_test.rb b/railties/test/application/initializers/hooks_test.rb index 198abbe861d15..8c7726339c970 100644 --- a/railties/test/application/initializers/hooks_test.rb +++ b/railties/test/application/initializers/hooks_test.rb @@ -10,6 +10,10 @@ def setup FileUtils.rm_rf "#{app_path}/config/environments" end + def teardown + teardown_app + end + test "load initializers" do app_file "config/initializers/foo.rb", "$foo = true" require "#{app_path}/config/environment" diff --git a/railties/test/application/initializers/i18n_test.rb b/railties/test/application/initializers/i18n_test.rb index 6222ba8a9a48d..f2b11e295330f 100644 --- a/railties/test/application/initializers/i18n_test.rb +++ b/railties/test/application/initializers/i18n_test.rb @@ -11,6 +11,10 @@ def setup require "rails/all" end + def teardown + teardown_app + end + def load_app require "#{app_path}/config/environment" end diff --git a/railties/test/application/initializers/load_path_test.rb b/railties/test/application/initializers/load_path_test.rb index e3d9e8e4b39df..644b8208a9628 100644 --- a/railties/test/application/initializers/load_path_test.rb +++ b/railties/test/application/initializers/load_path_test.rb @@ -5,15 +5,13 @@ class LoadPathTest < Test::Unit::TestCase include ActiveSupport::Testing::Isolation def setup - @prev_rails_env = ENV['RAILS_ENV'] - ENV['RAILS_ENV'] = 'development' build_app boot_rails FileUtils.rm_rf "#{app_path}/config/environments" end def teardown - ENV['RAILS_ENV'] = @prev_rails_env + teardown_app end test "initializing an application adds the application paths to the load path" do diff --git a/railties/test/application/initializers/notifications_test.rb b/railties/test/application/initializers/notifications_test.rb index 7e035be764d30..464c4a0fe32c3 100644 --- a/railties/test/application/initializers/notifications_test.rb +++ b/railties/test/application/initializers/notifications_test.rb @@ -9,6 +9,10 @@ def setup boot_rails end + def teardown + teardown_app + end + def instrument(*args, &block) ActiveSupport::Notifications.instrument(*args, &block) end diff --git a/railties/test/application/loading_test.rb b/railties/test/application/loading_test.rb index 5508b605141a0..4b9f97accb298 100644 --- a/railties/test/application/loading_test.rb +++ b/railties/test/application/loading_test.rb @@ -4,14 +4,12 @@ class LoadingTest < Test::Unit::TestCase include ActiveSupport::Testing::Isolation def setup - @prev_rails_env = ENV['RAILS_ENV'] - ENV['RAILS_ENV'] = 'development' build_app boot_rails end def teardown - ENV['RAILS_ENV'] = @prev_rails_env + teardown_app end def app diff --git a/railties/test/application/middleware_test.rb b/railties/test/application/middleware_test.rb index a2a69560b4f10..b0c6358765e08 100644 --- a/railties/test/application/middleware_test.rb +++ b/railties/test/application/middleware_test.rb @@ -11,6 +11,10 @@ def setup FileUtils.rm_rf "#{app_path}/config/environments" end + def teardown + teardown_app + end + def app @app ||= Rails.application end diff --git a/railties/test/application/paths_test.rb b/railties/test/application/paths_test.rb index c98b11556b69c..824e6c35418fe 100644 --- a/railties/test/application/paths_test.rb +++ b/railties/test/application/paths_test.rb @@ -20,6 +20,10 @@ def setup @paths = Rails.application.config.paths end + def teardown + teardown_app + end + def root(*path) app_path(*path).to_s end diff --git a/railties/test/application/rackup_test.rb b/railties/test/application/rackup_test.rb index e2076eb114fd0..f4ed0b647da71 100644 --- a/railties/test/application/rackup_test.rb +++ b/railties/test/application/rackup_test.rb @@ -11,14 +11,12 @@ def rackup end def setup - @prev_rails_env = ENV['RAILS_ENV'] - ENV['RAILS_ENV'] = 'development' build_app boot_rails end def teardown - ENV['RAILS_ENV'] = @prev_rails_env + teardown_app end test "rails app is present" do diff --git a/railties/test/application/rake_test.rb b/railties/test/application/rake_test.rb index 719550f9d9296..cd2c7d835e4e9 100644 --- a/railties/test/application/rake_test.rb +++ b/railties/test/application/rake_test.rb @@ -10,6 +10,10 @@ def setup FileUtils.rm_rf("#{app_path}/config/environments") end + def teardown + teardown_app + end + def test_gems_tasks_are_loaded_first_than_application_ones app_file "lib/tasks/app.rake", <<-RUBY $task_loaded = Rake::Task.task_defined?("db:create:all") diff --git a/railties/test/application/routing_test.rb b/railties/test/application/routing_test.rb index 53bb7868da1ca..324e87443791d 100644 --- a/railties/test/application/routing_test.rb +++ b/railties/test/application/routing_test.rb @@ -39,6 +39,10 @@ def index RUBY end + def teardown + teardown_app + end + test "rails/info/properties in development" do app("development") get "/rails/info/properties" diff --git a/railties/test/application/runner_test.rb b/railties/test/application/runner_test.rb index 292d1e247f059..4104bacae5ccf 100644 --- a/railties/test/application/runner_test.rb +++ b/railties/test/application/runner_test.rb @@ -18,6 +18,10 @@ def self.count MODEL end + def teardown + teardown_app + end + def test_should_include_runner_in_shebang_line_in_help assert_match "/rails runner", Dir.chdir(app_path) { `bundle exec rails runner --help` } end diff --git a/railties/test/application/test_test.rb b/railties/test/application/test_test.rb index de316a6fd0f9e..931d449fadd83 100644 --- a/railties/test/application/test_test.rb +++ b/railties/test/application/test_test.rb @@ -9,6 +9,10 @@ def setup boot_rails end + def teardown + teardown_app + end + test "truth" do app_file 'test/unit/foo_test.rb', <<-RUBY require 'test_helper' diff --git a/railties/test/isolation/abstract_unit.rb b/railties/test/isolation/abstract_unit.rb index 390c0ab543e77..2867d8c66c557 100644 --- a/railties/test/isolation/abstract_unit.rb +++ b/railties/test/isolation/abstract_unit.rb @@ -79,6 +79,8 @@ def assert_body(expected, resp) module Generation def build_app(options = {}) + @prev_rails_env = ENV.delete('RAILS_ENV') + FileUtils.rm_rf(app_path) FileUtils.cp_r(tmp_path('app_template'), app_path) @@ -103,6 +105,12 @@ def build_app(options = {}) add_to_config 'config.secret_token = "3b7cd727ee24e8444053437c36cc66c4"; config.session_store :cookie_store, :key => "_myapp_session"; config.active_support.deprecation = :log' end + def teardown_app + ENV['RAILS_ENV'] = @prev_rails_env if @prev_rails_env + end + + # Make a very basic app, without creating the whole directory structure. + # This is faster and simpler than the method above. def make_basic_app require "rails" require "action_controller/railtie" diff --git a/railties/test/railties/engine_test.rb b/railties/test/railties/engine_test.rb index 7410a10712eff..2b572b933ff42 100644 --- a/railties/test/railties/engine_test.rb +++ b/railties/test/railties/engine_test.rb @@ -20,6 +20,10 @@ class Engine < ::Rails::Engine end end + def teardown + teardown_app + end + test "Rails::Engine itself does not respond to config" do boot_rails assert !Rails::Engine.respond_to?(:config) diff --git a/railties/test/railties/plugin_ordering_test.rb b/railties/test/railties/plugin_ordering_test.rb index f6ca493fdf905..1cfaf557e972f 100644 --- a/railties/test/railties/plugin_ordering_test.rb +++ b/railties/test/railties/plugin_ordering_test.rb @@ -12,6 +12,10 @@ def setup plugin "c_plugin", "$arr << :c" end + def teardown + teardown_app + end + def boot_rails super require "#{app_path}/config/environment" @@ -69,4 +73,4 @@ def boot_rails assert $bar end end -end \ No newline at end of file +end diff --git a/railties/test/railties/plugin_test.rb b/railties/test/railties/plugin_test.rb index e2c0721a4cab7..7cdd4d35b61bf 100644 --- a/railties/test/railties/plugin_test.rb +++ b/railties/test/railties/plugin_test.rb @@ -15,6 +15,10 @@ def setup end end + def teardown + teardown_app + end + test "Rails::Plugin itself does not respond to config" do boot_rails assert !Rails::Plugin.respond_to?(:config) diff --git a/railties/test/railties/railtie_test.rb b/railties/test/railties/railtie_test.rb index 6715003d3d193..f6ce73f0f20b5 100644 --- a/railties/test/railties/railtie_test.rb +++ b/railties/test/railties/railtie_test.rb @@ -11,6 +11,10 @@ def setup require "rails/all" end + def teardown + teardown_app + end + def app @app ||= Rails.application end