mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #27802 from domcleal/27801-multiple-rake-tests
Collect all file patterns when running multiple rake test tasks
This commit is contained in:
commit
2cb6c27310
3 changed files with 28 additions and 7 deletions
|
@ -1,3 +1,9 @@
|
|||
* Fix running multiple tests in one `rake` command
|
||||
|
||||
e.g. `bin/rake test:models test:controllers`
|
||||
|
||||
*Dominic Cleal*
|
||||
|
||||
* Add option to configure Ruby's warning behaviour to test runner.
|
||||
|
||||
*Yuji Yaginuma*
|
||||
|
|
|
@ -59,19 +59,18 @@ module Minitest
|
|||
|
||||
options[:color] = true
|
||||
options[:output_inline] = true
|
||||
options[:patterns] = defined?(@rake_patterns) ? @rake_patterns : opts.order!
|
||||
options[:patterns] = opts.order! unless run_via[:rake]
|
||||
end
|
||||
|
||||
# Running several Rake tasks in a single command would trip up the runner,
|
||||
# as the patterns would also contain the other Rake tasks.
|
||||
def self.rake_run(patterns) # :nodoc:
|
||||
@rake_patterns = patterns
|
||||
run_via[:rake] = true
|
||||
::Rails::TestRequirer.require_files(patterns)
|
||||
autorun
|
||||
end
|
||||
|
||||
module RunRespectingRakeTestopts
|
||||
def run(args = [])
|
||||
if defined?(@rake_patterns)
|
||||
if run_via[:rake]
|
||||
args = Shellwords.split(ENV["TESTOPTS"] || "")
|
||||
end
|
||||
|
||||
|
@ -86,8 +85,9 @@ module Minitest
|
|||
def self.plugin_rails_init(options)
|
||||
ENV["RAILS_ENV"] = options[:environment] || "test"
|
||||
|
||||
# If run via `ruby` we've been passed the files to run directly.
|
||||
unless run_via[:ruby]
|
||||
# If run via `ruby` we've been passed the files to run directly, or if run
|
||||
# via `rake` then they have already been eagerly required.
|
||||
unless run_via[:ruby] || run_via[:rake]
|
||||
::Rails::TestRequirer.require_files(options[:patterns])
|
||||
end
|
||||
|
||||
|
|
|
@ -536,6 +536,21 @@ module ApplicationTests
|
|||
assert_match "seed=1234", output, "passing TEST= should run selected test"
|
||||
end
|
||||
|
||||
def test_rake_runs_multiple_test_tasks
|
||||
create_test_file :models, "account"
|
||||
create_test_file :controllers, "accounts_controller"
|
||||
output = Dir.chdir(app_path) { `bin/rake test:models test:controllers TESTOPTS='-v'` }
|
||||
assert_match "AccountTest#test_truth", output
|
||||
assert_match "AccountsControllerTest#test_truth", output
|
||||
end
|
||||
|
||||
def test_rake_db_and_test_tasks_parses_args_correctly
|
||||
create_test_file :models, "account"
|
||||
output = Dir.chdir(app_path) { `bin/rake db:migrate test:models TESTOPTS='-v' && echo ".tables" | rails dbconsole` }
|
||||
assert_match "AccountTest#test_truth", output
|
||||
assert_match "ar_internal_metadata", output
|
||||
end
|
||||
|
||||
def test_warnings_option
|
||||
app_file "test/models/warnings_test.rb", <<-RUBY
|
||||
require 'test_helper'
|
||||
|
|
Loading…
Reference in a new issue