DEV: Update `rake qunit:test` and `rake plugin:qunit` to use `testem`
For now this is still gated behind a `QUNIT_EMBER_CLI=1` environment variable, but will eventually become the default so that we can remove `run-qunit.js`.
This commit is contained in:
parent
ff5a6edb71
commit
5c23c6cdab
|
@ -194,7 +194,7 @@ desc 'run plugin qunit tests'
|
||||||
task 'plugin:qunit', [:plugin, :timeout] do |t, args|
|
task 'plugin:qunit', [:plugin, :timeout] do |t, args|
|
||||||
args.with_defaults(plugin: "*")
|
args.with_defaults(plugin: "*")
|
||||||
|
|
||||||
rake = `which rake`.strip
|
rake = "#{Rails.root}/bin/rake"
|
||||||
|
|
||||||
cmd = 'LOAD_PLUGINS=1 '
|
cmd = 'LOAD_PLUGINS=1 '
|
||||||
cmd += 'QUNIT_SKIP_CORE=1 '
|
cmd += 'QUNIT_SKIP_CORE=1 '
|
||||||
|
@ -209,7 +209,8 @@ task 'plugin:qunit', [:plugin, :timeout] do |t, args|
|
||||||
cmd += "#{rake} qunit:test"
|
cmd += "#{rake} qunit:test"
|
||||||
cmd += "[#{args[:timeout]}]" if args[:timeout]
|
cmd += "[#{args[:timeout]}]" if args[:timeout]
|
||||||
|
|
||||||
sh cmd
|
system cmd
|
||||||
|
exit $?.exitstatus
|
||||||
end
|
end
|
||||||
|
|
||||||
desc 'run all migrations of a plugin'
|
desc 'run all migrations of a plugin'
|
||||||
|
|
|
@ -58,15 +58,9 @@ task "qunit:test", [:timeout, :qunit_path] do |_, args|
|
||||||
"UNICORN_TIMEOUT" => "90",
|
"UNICORN_TIMEOUT" => "90",
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd = if ember_cli
|
|
||||||
"#{Rails.root}/bin/ember-cli -u --port #{port} --proxy http://localhost:#{unicorn_port} -lr false"
|
|
||||||
else
|
|
||||||
"#{Rails.root}/bin/unicorn"
|
|
||||||
end
|
|
||||||
|
|
||||||
pid = Process.spawn(
|
pid = Process.spawn(
|
||||||
env,
|
env,
|
||||||
cmd,
|
"#{Rails.root}/bin/unicorn",
|
||||||
pgroup: true
|
pgroup: true
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -74,9 +68,8 @@ task "qunit:test", [:timeout, :qunit_path] do |_, args|
|
||||||
success = true
|
success = true
|
||||||
test_path = "#{Rails.root}/test"
|
test_path = "#{Rails.root}/test"
|
||||||
qunit_path = args[:qunit_path]
|
qunit_path = args[:qunit_path]
|
||||||
qunit_path ||= "/tests" if ember_cli
|
qunit_path ||= "/qunit" if !ember_cli
|
||||||
qunit_path ||= "/qunit"
|
|
||||||
cmd = "node #{test_path}/run-qunit.js http://localhost:#{port}#{qunit_path}"
|
|
||||||
options = { seed: (ENV["QUNIT_SEED"] || Random.new.seed), hidepassed: 1 }
|
options = { seed: (ENV["QUNIT_SEED"] || Random.new.seed), hidepassed: 1 }
|
||||||
|
|
||||||
%w{module filter qunit_skip_core qunit_single_plugin theme_name theme_url theme_id}.each do |arg|
|
%w{module filter qunit_skip_core qunit_single_plugin theme_name theme_url theme_id}.each do |arg|
|
||||||
|
@ -87,11 +80,7 @@ task "qunit:test", [:timeout, :qunit_path] do |_, args|
|
||||||
options['report_requests'] = '1'
|
options['report_requests'] = '1'
|
||||||
end
|
end
|
||||||
|
|
||||||
cmd += "?#{options.to_query.gsub('+', '%20').gsub("&", '\\\&')}"
|
query = options.to_query
|
||||||
|
|
||||||
if args[:timeout].present?
|
|
||||||
cmd += " #{args[:timeout]}"
|
|
||||||
end
|
|
||||||
|
|
||||||
@now = Time.now
|
@now = Time.now
|
||||||
def elapsed
|
def elapsed
|
||||||
|
@ -100,7 +89,8 @@ task "qunit:test", [:timeout, :qunit_path] do |_, args|
|
||||||
|
|
||||||
# wait for server to accept connections
|
# wait for server to accept connections
|
||||||
require 'net/http'
|
require 'net/http'
|
||||||
uri = URI("http://localhost:#{port}/#{qunit_path}")
|
warmup_path = ember_cli ? "/assets/discourse/tests/active-plugins.js" : "/qunit"
|
||||||
|
uri = URI("http://localhost:#{unicorn_port}/#{warmup_path}")
|
||||||
puts "Warming up Rails server"
|
puts "Warming up Rails server"
|
||||||
begin
|
begin
|
||||||
Net::HTTP.get(uri)
|
Net::HTTP.get(uri)
|
||||||
|
@ -112,7 +102,18 @@ task "qunit:test", [:timeout, :qunit_path] do |_, args|
|
||||||
end
|
end
|
||||||
puts "Rails server is warmed up"
|
puts "Rails server is warmed up"
|
||||||
|
|
||||||
sh(cmd)
|
if ember_cli
|
||||||
|
Dir.chdir("#{Rails.root}/app/assets/javascripts/discourse") do # rubocop:disable Discourse/NoChdir because this is not part of the app
|
||||||
|
cmd = ["env", "UNICORN_PORT=#{unicorn_port}", "yarn", "ember", "test", "--query", query]
|
||||||
|
cmd += ["--test-page", qunit_path.delete_prefix("/")] if qunit_path
|
||||||
|
system(*cmd)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
cmd = "node #{test_path}/run-qunit.js http://localhost:#{port}#{qunit_path}"
|
||||||
|
cmd += "?#{query.gsub('+', '%20').gsub("&", '\\\&')}"
|
||||||
|
cmd += " #{args[:timeout]}" if args[:timeout].present?
|
||||||
|
system(cmd)
|
||||||
|
end
|
||||||
success &&= $?.success?
|
success &&= $?.success?
|
||||||
ensure
|
ensure
|
||||||
# was having issues with HUP
|
# was having issues with HUP
|
||||||
|
|
Loading…
Reference in New Issue