def run
phantom_script = File.join(File.dirname(__FILE__), 'phantom_jasmine_run.js')
command = "\"#{phantom_js_path}\" \"#{phantom_script}\" \"#{jasmine_server_url}\" \"#{show_console_log}\" \"#{@phantom_config_script}\""
run_details = { 'random' => false }
IO.popen(command) do |output|
output.each do |line|
if line =~ /^jasmine_spec_result/
line = line.sub(/^jasmine_spec_result/, '')
raw_results = JSON.parse(line, :max_nesting => false)
results = raw_results.map { |r| Result.new(r.merge!("show_full_stack_trace" => @show_full_stack_trace)) }
formatter.format(results)
elsif line =~ /^jasmine_suite_result/
line = line.sub(/^jasmine_suite_result/, '')
raw_results = JSON.parse(line, :max_nesting => false)
results = raw_results.map { |r| Result.new(r.merge!("show_full_stack_trace" => @show_full_stack_trace)) }
failures = results.select(&:failed?)
if failures.any?
formatter.format(failures)
end
elsif line =~ /^jasmine_done/
line = line.sub(/^jasmine_done/, '')
run_details = JSON.parse(line, :max_nesting => false)
elsif line =~ /^Failed to configure phantom$/
config_failure = Result.new('fullName' => line,
'failedExpectations' => [],
'description' => '',
'status' => 'failed',
'show_full_stack_trace' => @show_full_stack_trace)
formatter.format([config_failure])
@show_console_log = true
puts line
elsif show_console_log
puts line
end
end
end
formatter.done(run_details)
end