# frozen_string_literal: true require "rake/testtask" require "pathname" require "open3" require "action_cable" task default: :test task package: %w( assets:compile assets:verify ) Rake::TestTask.new do |t| t.libs << "test" t.test_files = Dir.glob("#{__dir__}/test/**/*_test.rb") t.warning = true t.verbose = true t.ruby_opts = ["--dev"] if defined?(JRUBY_VERSION) end namespace :test do task :isolated do Dir.glob("test/**/*_test.rb").all? do |file| sh(Gem.ruby, "-w", "-Ilib:test", file) end || raise("Failures") end task :integration do require "blade" if ENV["CI"] Blade.start(interface: :ci) else Blade.start(interface: :runner) end end end namespace :assets do desc "Compile Action Cable assets" task :compile do require "blade" require "sprockets" require "sprockets/export" Blade.build end desc "Verify compiled Action Cable assets" task :verify do file = "lib/assets/compiled/action_cable.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 pathname.read =~ /module\.exports.*define\.amd/m puts "[OK]" else $stderr.puts "[FAIL]" fail end print "[verify] #{__dir__} can be required as a module " _, stderr, status = Open3.capture3("node", "--print", "window = {}; require('#{__dir__}');") if status.success? puts "[OK]" else $stderr.puts "[FAIL]\n#{stderr}" fail end end end