Permalink
Browse files

Make sure that `rails test` load test in test env

  • Loading branch information...
1 parent b51673f commit 3ed41e579e45464aa6e6342783b77f9ec29e339c @sikachu sikachu committed Mar 9, 2013
@@ -84,10 +84,9 @@
$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'
@@ -56,6 +56,10 @@ def parse_arguments(arguments)
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 @@ def parse_arguments(arguments)
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 @@ def parse_arguments(arguments)
# 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)
@@ -1,4 +1,4 @@
-ENV["RAILS_ENV"] = "test"
+ENV["RAILS_ENV"] ||= "test"
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
@@ -191,6 +191,39 @@ def test_load_fixtures_when_running_test_suites
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 @@ def create_model_with_fixture
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 @@ def test_truth
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

0 comments on commit 3ed41e5

Please sign in to comment.