mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
5a0e0e7299
we can just reuse the parent process. We should figure out what files are commonly required among the test files and try to require them in the parent so that the require time cost is amortized across the processes.
45 lines
1.2 KiB
Ruby
45 lines
1.2 KiB
Ruby
require 'rake/testtask'
|
|
|
|
task :default => :test
|
|
|
|
desc "Run all unit tests"
|
|
task :test => 'test:isolated'
|
|
|
|
dash_i = [
|
|
'test',
|
|
'lib',
|
|
"#{File.dirname(__FILE__)}/../activesupport/lib",
|
|
"#{File.dirname(__FILE__)}/../actionpack/lib",
|
|
"#{File.dirname(__FILE__)}/../activemodel/lib"
|
|
]
|
|
|
|
dash_i.reverse_each do |x|
|
|
$:.unshift x unless $:.include? x
|
|
end
|
|
$-w = true
|
|
|
|
require 'bundler/setup' unless defined?(Bundler)
|
|
require 'active_support'
|
|
|
|
namespace :test do
|
|
task :isolated do
|
|
dirs = (ENV["TEST_DIR"] || ENV["TEST_DIRS"] || "**").split(",")
|
|
test_files = dirs.map { |dir| "test/#{dir}/*_test.rb" }
|
|
Dir[*test_files].each do |file|
|
|
next true if file.include?("fixtures")
|
|
puts "#{FileUtils::RUBY} -w -I#{dash_i.join ':'} #{file}"
|
|
|
|
# We could run these in parallel, but pretty much all of the
|
|
# railties tests already run in parallel, so ¯\_(⊙︿⊙)_/¯
|
|
Process.waitpid fork { ARGV.clear; load file }
|
|
end
|
|
end
|
|
end
|
|
|
|
Rake::TestTask.new('test:regular') do |t|
|
|
t.libs << 'test' << "#{File.dirname(__FILE__)}/../activesupport/lib"
|
|
t.pattern = 'test/**/*_test.rb'
|
|
t.warning = false
|
|
t.verbose = true
|
|
t.ruby_opts = ["--dev"] if defined?(JRUBY_VERSION)
|
|
end
|