rails--rails/railties/Rakefile

62 lines
1.5 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
require "rake/testtask"
2016-08-06 17:38:55 +00:00
task default: :test
task :package
desc "Run all unit tests"
2016-08-06 17:38:55 +00:00
task test: "test:isolated"
namespace :test do
task :isolated do
dash_i = [
"test",
"lib",
"../activesupport/lib",
"../actionpack/lib",
"../actionview/lib",
"../activemodel/lib"
].map { |dir| File.expand_path(dir, __dir__) }
dash_i.reverse_each do |x|
$:.unshift(x) unless $:.include?(x)
end
$-w = true
require "bundler/setup" unless defined?(Bundler)
require "active_support"
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.start_with?("test/fixtures/")
fake_command = Shellwords.join([
FileUtils::RUBY,
"-w",
*dash_i.map { |dir| "-I#{Pathname.new(dir).relative_path_from(Pathname.pwd)}" },
file,
])
puts fake_command
# 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 }
unless $?.success?
raise "Command failed with status (#{$?.exitstatus}): #{fake_command}"
end
2010-06-24 08:56:16 +00:00
end
end
end
Rake::TestTask.new("test:regular") do |t|
t.libs << "test" << "#{__dir__}/../activesupport/lib"
t.pattern = "test/**/*_test.rb"
2015-08-28 02:48:46 +00:00
t.warning = false
t.verbose = true
t.ruby_opts = ["--dev"] if defined?(JRUBY_VERSION)
end