mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
1fac7b79f3
Since we want this flag to be enabled anytime we are running the tests under JRuby, let's enable this at the Rakefile level so people get the performance boost on their local checkout. Moreover, we avoid having to update this particular line anytime the option changes on the JRuby side. The only drawback is that we have to define it in every Rakefile but there's no big deal, this is already the case for other options.
88 lines
2.3 KiB
Ruby
88 lines
2.3 KiB
Ruby
require 'rake/testtask'
|
|
require 'rubygems/package_task'
|
|
|
|
ACTIVEJOB_ADAPTERS = %w(inline delayed_job qu que queue_classic resque sidekiq sneakers sucker_punch backburner)
|
|
ACTIVEJOB_ADAPTERS -= %w(queue_classic) if defined?(JRUBY_VERSION)
|
|
|
|
task default: :test
|
|
task test: 'test:default'
|
|
|
|
namespace :test do
|
|
desc 'Run all adapter tests'
|
|
task :default do
|
|
run_without_aborting ACTIVEJOB_ADAPTERS.map { |a| "test:#{a}" }
|
|
end
|
|
|
|
desc 'Run all adapter tests in isolation'
|
|
task :isolated do
|
|
run_without_aborting ACTIVEJOB_ADAPTERS.map { |a| "test:isolated:#{a}" }
|
|
end
|
|
|
|
desc 'Run integration tests for all adapters'
|
|
task :integration do
|
|
run_without_aborting ACTIVEJOB_ADAPTERS.map { |a| "test:integration:#{a}" }
|
|
end
|
|
|
|
task 'env:integration' do
|
|
ENV['AJ_INTEGRATION_TESTS'] = "1"
|
|
end
|
|
|
|
ACTIVEJOB_ADAPTERS.each do |adapter|
|
|
task("env:#{adapter}") { ENV['AJADAPTER'] = adapter }
|
|
|
|
Rake::TestTask.new(adapter => "test:env:#{adapter}") do |t|
|
|
t.description = "Run adapter tests for #{adapter}"
|
|
t.libs << 'test'
|
|
t.test_files = FileList['test/cases/**/*_test.rb']
|
|
t.verbose = true
|
|
t.ruby_opts = ["--dev"] if defined?(JRUBY_VERSION)
|
|
end
|
|
|
|
namespace :isolated do
|
|
task adapter => "test:env:#{adapter}" do
|
|
dir = File.dirname(__FILE__)
|
|
Dir.glob("#{dir}/test/cases/**/*_test.rb").all? do |file|
|
|
sh(Gem.ruby, '-w', "-I#{dir}/lib", "-I#{dir}/test", file)
|
|
end or raise 'Failures'
|
|
end
|
|
end
|
|
|
|
namespace :integration do
|
|
Rake::TestTask.new(adapter => ["test:env:#{adapter}", 'test:env:integration']) do |t|
|
|
t.description = "Run integration tests for #{adapter}"
|
|
t.libs << 'test'
|
|
t.test_files = FileList['test/integration/**/*_test.rb']
|
|
t.verbose = true
|
|
t.ruby_opts = ["--dev"] if defined?(JRUBY_VERSION)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
def run_without_aborting(tasks)
|
|
errors = []
|
|
|
|
tasks.each do |task|
|
|
begin
|
|
Rake::Task[task].invoke
|
|
rescue Exception
|
|
errors << task
|
|
end
|
|
end
|
|
|
|
abort "Errors running #{errors.join(', ')}" if errors.any?
|
|
end
|
|
|
|
|
|
spec = eval(File.read('activejob.gemspec'))
|
|
|
|
Gem::PackageTask.new(spec) do |p|
|
|
p.gem_spec = spec
|
|
end
|
|
|
|
desc 'Release to rubygems'
|
|
task release: :package do
|
|
require 'rake/gemcutter'
|
|
Rake::Gemcutter::Tasks.new(spec).define
|
|
Rake::Task['gem:push'].invoke
|
|
end
|