rails--rails/actionview/Rakefile

159 lines
3.8 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
require "rake/testtask"
2017-02-21 18:41:17 +00:00
require "fileutils"
require "open3"
desc "Default Task"
2016-08-06 17:36:34 +00:00
task default: :test
task package: %w( assets:compile assets:verify )
# Run the unit tests
desc "Run all unit tests"
2016-08-06 17:36:34 +00:00
task test: ["test:template", "test:integration:action_pack", "test:integration:active_record"]
namespace :test do
2013-06-20 16:24:50 +00:00
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"]
2013-08-05 22:43:32 +00:00
t.warning = true
t.verbose = true
t.ruby_opts = ["--dev"] if defined?(JRUBY_VERSION)
end
desc "Run tests for rails-ujs"
2017-02-21 18:41:17 +00:00
task :ujs do
system("npm run lint")
exit $?.exitstatus unless $?.success?
2017-02-21 18:41:17 +00:00
begin
listen_host = "localhost"
listen_port = "4567"
runner_command = %w(ruby ../ci/qunit-selenium-runner.rb)
if ENV["SELENIUM_DRIVER_URL"]
require "socket"
runner_command += %W(http://#{Socket.gethostname}:#{listen_port}/ #{ENV["SELENIUM_DRIVER_URL"]})
listen_host = "0.0.0.0"
else
runner_command += %W(http://localhost:#{listen_port}/)
end
2017-02-21 18:41:17 +00:00
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
2017-02-21 18:41:17 +00:00
start_time = Time.now
loop do
2017-07-26 15:28:12 +00:00
break if system("lsof -i :4567", 1 => File::NULL)
2017-02-21 18:41:17 +00:00
if Time.now - start_time > 5
puts "Failed to start puma after 5 seconds"
puts
puts File.read("log/test.log")
2017-02-21 18:41:17 +00:00
exit 1
end
sleep 0.2
2017-02-21 18:41:17 +00:00
end
system(*runner_command)
status = $?.exitstatus
2017-02-21 18:41:17 +00:00
ensure
Process.kill("KILL", -pid) if pid
FileUtils.rm_rf("log")
2017-02-21 18:41:17 +00:00
end
exit status
end
2013-08-05 22:43:32 +00:00
namespace :integration do
# Active Record Integration Tests
2013-08-05 22:43:32 +00:00
Rake::TestTask.new(:active_record) do |t|
t.libs << "test"
t.test_files = FileList["test/activerecord/*_test.rb"]
2013-08-05 22:43:32 +00:00
t.warning = true
t.verbose = true
t.ruby_opts = ["--dev"] if defined?(JRUBY_VERSION)
2013-08-05 22:43:32 +00:00
end
2013-08-05 22:47:49 +00:00
# Action Pack Integration Tests
2013-08-05 22:47:49 +00:00
Rake::TestTask.new(:action_pack) do |t|
t.libs << "test"
t.test_files = FileList["test/actionpack/**/*_test.rb"]
2013-08-05 22:47:49 +00:00
t.warning = true
t.verbose = true
t.ruby_opts = ["--dev"] if defined?(JRUBY_VERSION)
2013-08-05 22:47:49 +00:00
end
2013-08-05 22:43:32 +00:00
end
end
2016-11-26 04:42:29 +00:00
namespace :ujs do
desc "Starts the test server"
task :server do
system "bundle exec rackup test/ujs/config.ru -p 4567 -s puma"
2016-11-26 04:42:29 +00:00
end
end
namespace :assets do
desc "Compile Action View assets"
task :compile do
require "blade"
require "sprockets"
require "sprockets/export"
Blade.build
end
2017-03-31 12:25:18 +00:00
desc "Verify compiled Action View assets"
task :verify do
file = "lib/assets/compiled/rails-ujs.js"
pathname = Pathname.new("#{__dir__}/#{file}")
print "[verify] #{file} exists "
if pathname.exist?
puts "[OK]"
else
$stderr.puts "[FAIL]"
fail
end
print "[verify] #{file} is a UMD module "
if /module\.exports.*define\.amd/m.match?(pathname.read)
puts "[OK]"
else
$stderr.puts "[FAIL]"
fail
end
print "[verify] #{__dir__} can be required as a module "
js = <<-JS
window = { Event: class {} }
class Element {}
require('#{__dir__}')
JS
_, stderr, status = Open3.capture3("node", "--print", js)
if status.success?
puts "[OK]"
else
$stderr.puts "[FAIL]\n#{stderr}"
fail
end
end
end
task :lines do
load File.expand_path("../tools/line_statistics", __dir__)
files = FileList["lib/**/*.rb"]
CodeTools::LineStatistics.new(files).print_loc
end