mirror of https://github.com/rails/rails
107 lines
2.7 KiB
Ruby
107 lines
2.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "rake/testtask"
|
|
require "fileutils"
|
|
require "open3"
|
|
require "base64"
|
|
|
|
desc "Default Task"
|
|
task default: :test
|
|
|
|
task :package
|
|
|
|
# Run the unit tests
|
|
|
|
desc "Run all unit tests"
|
|
task test: ["test:template", "test:integration:action_pack", "test:integration:active_record"]
|
|
|
|
namespace :test do
|
|
task :isolated do
|
|
Dir.glob("test/{actionpack,activerecord,template}/**/*_test.rb").all? do |file|
|
|
sh(Gem.ruby, "-w", "-Ilib:test", file)
|
|
end || raise("Failures")
|
|
end
|
|
|
|
Rake::TestTask.new(:template) do |t|
|
|
t.libs << "test"
|
|
t.test_files = FileList["test/template/**/*_test.rb"]
|
|
t.warning = true
|
|
t.verbose = true
|
|
t.ruby_opts = ["--dev"] if defined?(JRUBY_VERSION)
|
|
end
|
|
|
|
desc "Run tests for rails-ujs"
|
|
task :ujs do
|
|
system("npm run lint")
|
|
exit $?.exitstatus unless $?.success?
|
|
|
|
begin
|
|
listen_host = "localhost"
|
|
listen_port = "4567"
|
|
|
|
Dir.mkdir("log")
|
|
pid = File.open("log/test.log", "w") do |f|
|
|
spawn(*%W(rackup test/ujs/config.ru -o #{listen_host} -p #{listen_port} -s puma), out: f, err: f, pgroup: true)
|
|
end
|
|
|
|
start_time = Time.now
|
|
|
|
loop do
|
|
break if system("lsof -i :4567", 1 => File::NULL)
|
|
|
|
if Time.now - start_time > 5
|
|
puts "Failed to start puma after 5 seconds"
|
|
puts
|
|
puts File.read("log/test.log")
|
|
exit 1
|
|
end
|
|
|
|
sleep 0.2
|
|
end
|
|
# Decode the obfuscate environment variables
|
|
decoded_environment_variables = Hash[*Base64.decode64(ENV.fetch("ENCODED", "")).split(/[ =]/)]
|
|
system(decoded_environment_variables, "npm", "test")
|
|
status = $?.exitstatus
|
|
ensure
|
|
Process.kill("KILL", -pid) if pid
|
|
FileUtils.rm_rf("log")
|
|
end
|
|
|
|
exit status
|
|
end
|
|
|
|
namespace :integration do
|
|
# Active Record Integration Tests
|
|
Rake::TestTask.new(:active_record) do |t|
|
|
t.libs << "test"
|
|
t.test_files = FileList["test/activerecord/*_test.rb"]
|
|
t.warning = true
|
|
t.verbose = true
|
|
t.ruby_opts = ["--dev"] if defined?(JRUBY_VERSION)
|
|
end
|
|
|
|
# Action Pack Integration Tests
|
|
Rake::TestTask.new(:action_pack) do |t|
|
|
t.libs << "test"
|
|
t.test_files = FileList["test/actionpack/**/*_test.rb"]
|
|
t.warning = true
|
|
t.verbose = true
|
|
t.ruby_opts = ["--dev"] if defined?(JRUBY_VERSION)
|
|
end
|
|
end
|
|
end
|
|
|
|
namespace :ujs do
|
|
desc "Starts the test server"
|
|
task :server do
|
|
spawn("bundle", "exec", "rackup", "test/ujs/config.ru", "-p", "4567", "-s", "puma")
|
|
system("npm", "test", "--", "--no-single-run", "--browsers", "Chrome")
|
|
end
|
|
end
|
|
|
|
task :lines do
|
|
load File.expand_path("../tools/line_statistics", __dir__)
|
|
files = FileList["lib/**/*.rb"]
|
|
CodeTools::LineStatistics.new(files).print_loc
|
|
end
|