2013-06-18 13:44:20 -04:00
desc " Runs the qunit test suite "
task " qunit:test " = > :environment do
require " rack "
2013-07-30 14:15:20 +10:00
require " socket "
2013-06-18 13:44:20 -04:00
unless %x{ which phantomjs > /dev/null 2>&1 }
abort " PhantomJS is not installed. Download from http://phantomjs.org "
end
2013-07-30 14:15:20 +10:00
# ensure we have this port available
def port_available? port
server = TCPServer . open port
server . close
true
rescue Errno :: EADDRINUSE
false
end
2013-06-18 13:44:20 -04:00
port = ENV [ 'TEST_SERVER_PORT' ] || 60099
2013-07-30 14:15:20 +10:00
while ! port_available? port
port += 1
end
2013-07-30 13:04:29 +10:00
unless pid = fork
2014-05-30 14:17:35 +10:00
Discourse . after_fork
2013-06-18 13:44:20 -04:00
Rack :: Server . start ( :config = > " config.ru " ,
:AccessLog = > [ ] ,
:Port = > port )
2013-07-30 13:04:29 +10:00
exit
2013-06-18 13:44:20 -04:00
end
begin
success = true
test_path = " #{ Rails . root } /vendor/assets/javascripts "
2015-08-25 10:42:19 +02:00
cmd = " phantomjs #{ test_path } /run-qunit.js http://localhost: #{ port } /qunit "
2013-06-18 13:44:20 -04:00
2016-06-14 12:06:11 +10:00
options = { }
%w{ module filter } . each do | arg |
options [ arg ] = ENV [ arg . upcase ] if ENV [ arg . upcase ] . present?
end
if options . present?
cmd += " ? #{ options . to_query . gsub ( '+' , '%20' ) } "
end
2013-07-30 12:32:12 +10:00
# wait for server to respond, will exception out on failure
tries = 0
begin
2013-07-30 13:04:29 +10:00
sh ( cmd )
2013-07-30 12:32:12 +10:00
rescue
2016-06-14 14:17:39 +10:00
exit if ENV [ 'RETRY' ] . present? && ENV [ 'RETRY' ] == 'false'
2013-07-30 12:35:41 +10:00
sleep 2
2013-07-30 12:32:12 +10:00
tries += 1
2013-07-30 12:35:41 +10:00
retry unless tries == 10
2013-07-30 12:32:12 +10:00
end
2013-06-18 13:44:20 -04:00
# A bit of a hack until we can figure this out on Travis
tries = 0
2014-03-26 12:20:41 -07:00
while tries < 3 && $? . exitstatus == 124 && ! quit
2013-06-18 13:44:20 -04:00
tries += 1
puts " \n Timed Out. Trying again... \n "
2013-07-30 12:32:12 +10:00
rake_system ( cmd )
2013-06-18 13:44:20 -04:00
end
success && = $? . success?
ensure
2013-07-30 14:15:20 +10:00
# was having issues with HUP
Process . kill " KILL " , pid
2013-06-18 13:44:20 -04:00
end
if success
puts " \n Tests Passed "
else
puts " \n Tests Failed "
exit ( 1 )
end
2013-07-30 12:32:12 +10:00
end