aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2013-04-05 15:44:23 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2013-04-05 15:44:41 -0700
commitc7a148f389a9aebd8b0f71b4de3672321bb523cc (patch)
tree74a48039df0b4e3f37a6da148420987a7e806a84 /railties
parent3844bb5ef8b66cd4447522b77a6dbfeae2caf226 (diff)
downloadrails-c7a148f389a9aebd8b0f71b4de3672321bb523cc.tar.gz
rails-c7a148f389a9aebd8b0f71b4de3672321bb523cc.tar.bz2
rails-c7a148f389a9aebd8b0f71b4de3672321bb523cc.zip
removing `rails test`, updating docs to show how to use `rake test`
Diffstat (limited to 'railties')
-rw-r--r--railties/CHANGELOG.md24
-rw-r--r--railties/lib/rails/commands.rb9
-rw-r--r--railties/lib/rails/commands/test_runner.rb146
-rw-r--r--railties/test/application/test_runner_test.rb6
4 files changed, 5 insertions, 180 deletions
diff --git a/railties/CHANGELOG.md b/railties/CHANGELOG.md
index ae13c3ccc9..e4a08f68c1 100644
--- a/railties/CHANGELOG.md
+++ b/railties/CHANGELOG.md
@@ -38,37 +38,23 @@
*Sam Ruby*
-* Rails now generates a `test/test_helper.rb` file with `fixtures :all` commented out by default,
- since we don't want to force loading all fixtures for user when a single test is run. However,
- fixtures are still going to be loaded automatically for test suites.
-
- To force all fixtures to be create in your database, use `rails test -f` to run your test.
-
- *Prem Sichanugrist*
-
-* Add `rails test` command for running tests
+* Improved `rake test` command for running tests
To run all tests:
- $ rails test
+ $ rake test
To run a test suite
- $ rails test [models,helpers,units,controllers,mailers,...]
+ $ rake test:[models,helpers,units,controllers,mailers,...]
To run a selected test file(s):
- $ rails test test/unit/foo_test.rb [test/unit/bar_test.rb ...]
+ $ rake test test/unit/foo_test.rb [test/unit/bar_test.rb ...]
To run a single test from a test file
- $ rails test test/unit/foo_test.rb -n test_the_truth
-
- For more information, see `rails test --help`.
-
- This command will eventually replace `rake test:*` and `rake test` tasks.
-
- *Prem Sichanugrist and Chris Toomey*
+ $ rake test test/unit/foo_test.rb TESTOPTS='-n test_the_truth'
* Improve service pages with new layout (404, etc).
diff --git a/railties/lib/rails/commands.rb b/railties/lib/rails/commands.rb
index 41d3722c18..0d1286031c 100644
--- a/railties/lib/rails/commands.rb
+++ b/railties/lib/rails/commands.rb
@@ -80,15 +80,6 @@ when 'server'
server.start
end
-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::TestRunner.start(ARGV, options)
-
when 'dbconsole'
require 'rails/commands/dbconsole'
Rails::DBConsole.start
diff --git a/railties/lib/rails/commands/test_runner.rb b/railties/lib/rails/commands/test_runner.rb
deleted file mode 100644
index d8857bd183..0000000000
--- a/railties/lib/rails/commands/test_runner.rb
+++ /dev/null
@@ -1,146 +0,0 @@
-require 'optparse'
-require 'minitest/unit'
-
-module Rails
- # Handles all logic behind +rails test+ command.
- class TestRunner
- class << self
- # Creates a new +TestRunner+ object with an array of test files to run
- # based on the arguments. When no arguments are provided, it runs all test
- # files. When a suite argument is provided, it runs only the test files in
- # that suite. Otherwise, it runs the specified test file(s).
- def start(files, options = {})
- original_fixtures_options = options.delete(:fixtures)
- options[:fixtures] = true
-
- case files.first
- when nil
- new(Dir['test/**/*_test.rb'], options).run
- when 'models'
- new(Dir['test/models/**/*_test.rb'], options).run
- when 'helpers'
- new(Dir['test/helpers/**/*_test.rb'], options).run
- when 'units'
- new(Dir['test/{models,helpers,unit}/**/*_test.rb'], options).run
- when 'controllers'
- new(Dir['test/controllers/**/*_test.rb'], options).run
- when 'mailers'
- new(Dir['test/mailers/**/*_test.rb'], options).run
- when 'functionals'
- new(Dir['test/{controllers,mailers,functional}/**/*_test.rb'], options).run
- when 'integration'
- new(Dir['test/integration/**/*_test.rb'], options).run
- else
- options[:fixtures] = original_fixtures_options
- new(files, options).run
- end
- end
-
- # Parses arguments and sets them as option flags
- def parse_arguments(arguments)
- options = {}
- orig_arguments = arguments.dup
-
- OptionParser.new do |opts|
- opts.banner = "Usage: rails test [path to test file(s) or test suite]"
-
- opts.separator ""
- opts.separator "Run a specific test file(s) or a test suite, under Rails'"
- opts.separator "environment. If the file name(s) or suit name is omitted,"
- opts.separator "Rails will run all tests."
- opts.separator ""
- opts.separator "Specific options:"
-
- opts.on '-h', '--help', 'Display this help.' do
- puts opts
- 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
-
- opts.on '-s', '--seed SEED', Integer, "Sets random seed" do |m|
- options[:seed] = m.to_i
- end
-
- opts.on '-v', '--verbose', "Verbose. Show progress processing files." do
- options[:verbose] = true
- end
-
- opts.on '-n', '--name PATTERN', "Filter test names on pattern (e.g. /foo/)" do |n|
- options[:filter] = n
- end
-
- opts.separator ""
- opts.separator "Support types of test suites:"
- opts.separator "-------------------------------------------------------------"
- opts.separator "* models (test/models/**/*)"
- opts.separator "* helpers (test/helpers/**/*)"
- opts.separator "* units (test/{models,helpers,unit}/**/*"
- opts.separator "* controllers (test/controllers/**/*)"
- opts.separator "* mailers (test/mailers/**/*)"
- opts.separator "* functionals (test/{controllers,mailers,functional}/**/*)"
- opts.separator "* integration (test/integration/**/*)"
- opts.separator "-------------------------------------------------------------"
-
- opts.parse! arguments
- orig_arguments -= arguments
- end
- options
- end
- end
-
- # Creates a new +TestRunner+ object with a list of test file paths.
- def initialize(files, options)
- @files = files
-
- Rails.application.load_tasks
- Rake::Task['db:test:load'].invoke
-
- if options.delete(:fixtures)
- if defined?(ActiveRecord::Base)
- ActiveSupport::TestCase.send :include, ActiveRecord::TestFixtures
- ActiveSupport::TestCase.fixture_path = "#{Rails.root}/test/fixtures/"
- ActiveSupport::TestCase.fixtures :all
- end
- end
-
- MiniTest::Unit.runner.options = options
- MiniTest::Unit.output = SilentUntilSyncStream.new(MiniTest::Unit.output)
- end
-
- # Runs test files by evaluating each of them.
- def run
- @files.each { |filename| load(filename) }
- end
-
- # A null stream object which ignores everything until +sync+ has been set
- # to true. This is only used to silence unnecessary output from MiniTest,
- # as MiniTest calls +output.sync = true+ right before it outputs the first
- # test result.
- class SilentUntilSyncStream < File
- # Creates a +SilentUntilSyncStream+ object by giving it a target stream
- # object that will be assigned to +MiniTest::Unit.output+ after +sync+ is
- # set to true.
- def initialize(target_stream)
- @target_stream = target_stream
- super(File::NULL, 'w')
- end
-
- # Swaps +MiniTest::Unit.output+ to another stream when +sync+ is true.
- def sync=(sync)
- if sync
- @target_stream.sync = true
- MiniTest::Unit.output = @target_stream
- end
-
- super
- end
- end
- end
-end
diff --git a/railties/test/application/test_runner_test.rb b/railties/test/application/test_runner_test.rb
index 405f6af295..180fc315d1 100644
--- a/railties/test/application/test_runner_test.rb
+++ b/railties/test/application/test_runner_test.rb
@@ -29,12 +29,6 @@ module ApplicationTests
assert_match "Current Environment: test", run_test_command('test/unit/env_test.rb')
end
- def test_run_shortcut
- create_test_file :models, 'foo'
- output = Dir.chdir(app_path) { `bundle exec rails t test/models/foo_test.rb` }
- assert_match "1 tests, 1 assertions, 0 failures", output
- end
-
def test_run_single_file
create_test_file :models, 'foo'
create_test_file :models, 'bar'