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:
Kasper Timm Hansen 2017-02-05 17:02:58 +01:00 committed by GitHub
commit 2cb6c27310
3 changed files with 28 additions and 7 deletions

View File

@ -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*

View File

@ -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

View File

@ -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'