diff options
author | Prem Sichanugrist <s@sikac.hu> | 2013-03-09 16:03:09 -0500 |
---|---|---|
committer | Prem Sichanugrist <s@sikac.hu> | 2013-03-09 17:38:39 -0500 |
commit | 3ed41e579e45464aa6e6342783b77f9ec29e339c (patch) | |
tree | 77d2b30e6f0f7b9ec2790b30c0cb116e2dc5329c | |
parent | b51673fbd9563bd3ffa22e22255ca1cef80cfb6d (diff) | |
download | rails-3ed41e579e45464aa6e6342783b77f9ec29e339c.tar.gz rails-3ed41e579e45464aa6e6342783b77f9ec29e339c.tar.bz2 rails-3ed41e579e45464aa6e6342783b77f9ec29e339c.zip |
Make sure that `rails test` load test in test env
-rw-r--r-- | railties/lib/rails/commands.rb | 3 | ||||
-rw-r--r-- | railties/lib/rails/commands/test_runner.rb | 12 | ||||
-rw-r--r-- | railties/lib/rails/generators/rails/app/templates/test/test_helper.rb | 2 | ||||
-rw-r--r-- | railties/test/application/test_runner_test.rb | 45 |
4 files changed, 55 insertions, 7 deletions
diff --git a/railties/lib/rails/commands.rb b/railties/lib/rails/commands.rb index 2984999a3c..41d3722c18 100644 --- a/railties/lib/rails/commands.rb +++ b/railties/lib/rails/commands.rb @@ -84,10 +84,9 @@ when 'test' $LOAD_PATH.unshift("./test") require 'rails/commands/test_runner' options = Rails::TestRunner.parse_arguments(ARGV) + ENV['RAILS_ENV'] ||= options[:environment] || 'test' require APP_PATH - Rails.application.require_environment! - Rails.application.load_tasks Rails::TestRunner.start(ARGV, options) when 'dbconsole' diff --git a/railties/lib/rails/commands/test_runner.rb b/railties/lib/rails/commands/test_runner.rb index 92c4d4e593..d8857bd183 100644 --- a/railties/lib/rails/commands/test_runner.rb +++ b/railties/lib/rails/commands/test_runner.rb @@ -56,6 +56,10 @@ module Rails exit end + opts.on '-e', '--environment NAME', String, 'Specifies the environment to run this test under' do |e| + options[:environment] = e + end + opts.on '-f', '--fixtures', 'Load fixtures in test/fixtures/ before running the tests' do options[:fixtures] = true end @@ -68,8 +72,8 @@ module Rails options[:verbose] = true end - opts.on '-n', '--name PATTERN', "Filter test names on pattern (e.g. /foo/)" do |a| - options[:filter] = a + opts.on '-n', '--name PATTERN', "Filter test names on pattern (e.g. /foo/)" do |n| + options[:filter] = n end opts.separator "" @@ -94,7 +98,9 @@ module Rails # Creates a new +TestRunner+ object with a list of test file paths. def initialize(files, options) @files = files - Rake::Task['test:prepare'].invoke + + Rails.application.load_tasks + Rake::Task['db:test:load'].invoke if options.delete(:fixtures) if defined?(ActiveRecord::Base) diff --git a/railties/lib/rails/generators/rails/app/templates/test/test_helper.rb b/railties/lib/rails/generators/rails/app/templates/test/test_helper.rb index f0aeeee827..ca40914d3b 100644 --- a/railties/lib/rails/generators/rails/app/templates/test/test_helper.rb +++ b/railties/lib/rails/generators/rails/app/templates/test/test_helper.rb @@ -1,4 +1,4 @@ -ENV["RAILS_ENV"] = "test" +ENV["RAILS_ENV"] ||= "test" require File.expand_path('../../config/environment', __FILE__) require 'rails/test_help' diff --git a/railties/test/application/test_runner_test.rb b/railties/test/application/test_runner_test.rb index 810748682a..7a5a428845 100644 --- a/railties/test/application/test_runner_test.rb +++ b/railties/test/application/test_runner_test.rb @@ -191,6 +191,39 @@ module ApplicationTests end end + def test_run_different_environment_using_env_var + app_file 'test/unit/env_test.rb', <<-RUBY + require 'test_helper' + + class EnvTest < ActiveSupport::TestCase + def test_env + puts Rails.env + end + end + RUBY + + assert_match /development/, Dir.chdir(app_path) { `RAILS_ENV=development bundle exec rails test test/unit/env_test.rb` } + end + + def test_run_different_environment_using_e_tag + app_file 'test/unit/env_test.rb', <<-RUBY + require 'test_helper' + + class EnvTest < ActiveSupport::TestCase + def test_env + puts Rails.env + end + end + RUBY + + assert_match /development/, run_test_command('-e development test/unit/env_test.rb') + end + + def test_generated_scaffold_works_with_rails_test + create_scaffold + assert_match /0 failures, 0 errors, 0 skips/, run_test_command('') + end + private def run_test_command(arguments = 'test/unit/test_test.rb') Dir.chdir(app_path) { `bundle exec rails test #{arguments}` } @@ -211,7 +244,7 @@ module ApplicationTests name: Tsubasa Hanekawa YAML - Dir.chdir(app_path) { `bundle exec rake db:migrate` } + run_migration end def create_fixture_test(path = :unit, name = 'test') @@ -251,5 +284,15 @@ module ApplicationTests end RUBY end + + def create_scaffold + script 'generate scaffold user name:string' + Dir.chdir(app_path) { File.exist?('app/models/user.rb') } + run_migration + end + + def run_migration + Dir.chdir(app_path) { `bundle exec rake db:migrate` } + end end end |