clean up how reporting is done somoe more

This commit is contained in:
John Bintz 2011-12-30 10:47:08 -05:00
parent 0adf3a41b6
commit d31f628d91
42 changed files with 193 additions and 175 deletions

View File

@ -1,7 +1,7 @@
Feature: Bin - Failure Feature: Bin - Failure
Scenario: Run a failing test Scenario: Run a failing test
Given there is no existing "spec/report.txt" file Given there is no existing "spec/report.txt" file
When I run `bin/jasmine-headless-webkit -j spec/jasmine/failure/failure.yml --format HeadlessFileReporter --out spec/report.txt` When I run `bin/jasmine-headless-webkit -j spec/jasmine/failure/failure.yml -f File:spec/report.txt`
Then the exit status should be 1 Then the exit status should be 1
And the report file "spec/report.txt" should have 1 total, 1 failure, no console usage And the report file "spec/report.txt" should have 1 total, 1 failure, no console usage

View File

@ -0,0 +1,7 @@
Feature: Bin - Files
Scenario: List the files a test suite will use
Given I have a test suite
When I run `bin/jasmine-headless-webkit -j spec/jasmine/success/success.yml -l`
Then the exit status should be 0
And the output should include "spec/jasmine/success/success.js"
And the output should include "spec/jasmine/success/success_spec.js"

View File

@ -3,16 +3,16 @@ Feature: Bin - Filtered Run - Both Runs
Given there is no existing "spec/report.txt" file Given there is no existing "spec/report.txt" file
Scenario: Run one and fail Scenario: Run one and fail
When I run `bin/jasmine-headless-webkit -j spec/jasmine/filtered_failure/filtered_failure.yml --format HeadlessFileReporter --out spec/report.txt ./spec/jasmine/filtered_failure/failure_spec.js` When I run `bin/jasmine-headless-webkit -j spec/jasmine/filtered_failure/filtered_failure.yml -f File:spec/report.txt ./spec/jasmine/filtered_failure/failure_spec.js`
Then the exit status should be 1 Then the exit status should be 1
And the report file "spec/report.txt" should have 1 total, 1 failure, no console usage And the report file "spec/report.txt" should have 1 total, 1 failure, no console usage
Scenario: Run both and succeed Scenario: Run both and succeed
When I run `bin/jasmine-headless-webkit -j spec/jasmine/filtered_success/filtered_success.yml --format HeadlessFileReporter --out spec/report.txt ./spec/jasmine/filtered_success/success_one_spec.js` When I run `bin/jasmine-headless-webkit -j spec/jasmine/filtered_success/filtered_success.yml -f File:spec/report.txt ./spec/jasmine/filtered_success/success_one_spec.js`
Then the exit status should be 0 Then the exit status should be 0
And the report file "spec/report.txt" should have 2 total, 0 failures, no console usage And the report file "spec/report.txt" should have 2 total, 0 failures, no console usage
Scenario: Run both with console.log Scenario: Run both with console.log
When I run `bin/jasmine-headless-webkit -j spec/jasmine/filtered_success_with_console/filtered_success.yml --format HeadlessFileReporter --out spec/report.txt ./spec/jasmine/filtered_success_with_console/success_one_spec.js` When I run `bin/jasmine-headless-webkit -j spec/jasmine/filtered_success_with_console/filtered_success.yml -f File:spec/report.txt ./spec/jasmine/filtered_success_with_console/success_one_spec.js`
Then the exit status should be 2 Then the exit status should be 2
And the report file "spec/report.txt" should have 2 total, 0 failures, yes console usage And the report file "spec/report.txt" should have 2 total, 0 failures, yes console usage

View File

@ -3,12 +3,12 @@ Feature: Bin - No Full Run
Given there is no existing "spec/report.txt" file Given there is no existing "spec/report.txt" file
Scenario: Only run the filtered run Scenario: Only run the filtered run
When I run `bin/jasmine-headless-webkit -j spec/jasmine/filtered_success/filtered_success.yml --format HeadlessFileReporter --out spec/report.txt --no-full-run ./spec/jasmine/filtered_success/success_one_spec.js` When I run `bin/jasmine-headless-webkit -j spec/jasmine/filtered_success/filtered_success.yml -f File:spec/report.txt --no-full-run ./spec/jasmine/filtered_success/success_one_spec.js`
Then the exit status should be 0 Then the exit status should be 0
And the report file "spec/report.txt" should have 1 total, 0 failure, no console usage And the report file "spec/report.txt" should have 1 total, 0 failure, no console usage
Scenario: Use a file outside of the normal test run Scenario: Use a file outside of the normal test run
When I run `bin/jasmine-headless-webkit -j spec/jasmine/filtered_success/filtered_success.yml --format HeadlessFileReporter --out spec/report.txt ./spec/jasmine/filtered_success/success_other_file.js` When I run `bin/jasmine-headless-webkit -j spec/jasmine/filtered_success/filtered_success.yml -f File:spec/report.txt ./spec/jasmine/filtered_success/success_other_file.js`
Then the exit status should be 0 Then the exit status should be 0
And the report file "spec/report.txt" should have 1 total, 0 failure, no console usage And the report file "spec/report.txt" should have 1 total, 0 failure, no console usage

View File

@ -0,0 +1,8 @@
Feature: Bin - Runner Out
Scenario: Write out the runner to a specified file
Given I have a test suite
When I run `bin/jasmine-headless-webkit -j spec/jasmine/success/success.yml --runner-out spec/runner.html`
Then the exit status should be 0
And the file "spec/runner.html" should contain a JHW runner
When I delete the file "spec/runner.html"

View File

@ -1,7 +1,7 @@
Feature: Bin - Success Feature: Bin - Success
Scenario: Run a successful test Scenario: Run a successful test with long format definition
Given there is no existing "spec/report.txt" file Given there is no existing "spec/report.txt" file
When I run `bin/jasmine-headless-webkit --seed 1234 -j spec/jasmine/success/success.yml --format HeadlessFileReporter --out spec/report.txt` When I run `bin/jasmine-headless-webkit --seed 1234 -j spec/jasmine/success/success.yml --format File --out spec/report.txt`
Then the exit status should be 0 Then the exit status should be 0
And the report file "spec/report.txt" should have 1 total, 0 failures, no console usage And the report file "spec/report.txt" should have 1 total, 0 failures, no console usage
And the report file "spec/report.txt" should have seed 1234 And the report file "spec/report.txt" should have seed 1234
@ -14,7 +14,7 @@ Feature: Bin - Success
Scenario: Run a successful test with shortened format definition Scenario: Run a successful test with shortened format definition
Given there is no existing "spec/report.txt" file Given there is no existing "spec/report.txt" file
When I run `bin/jasmine-headless-webkit -j spec/jasmine/success/success.yml --format HeadlessFileReporter:spec/report.txt` When I run `bin/jasmine-headless-webkit -j spec/jasmine/success/success.yml -f File:spec/report.txt`
Then the exit status should be 0 Then the exit status should be 0
And the report file "spec/report.txt" should have 1 total, 0 failures, no console usage And the report file "spec/report.txt" should have 1 total, 0 failures, no console usage

View File

@ -1,5 +1,5 @@
Feature: Bin - Success with JS Error Feature: Bin - Success with JS Error
Scenario: Succeed Scenario: Succeed
Given there is no existing "spec/report.txt" file Given there is no existing "spec/report.txt" file
When I run `bin/jasmine-headless-webkit -j spec/jasmine/success_with_error/success_with_error.yml --format HeadlessFileReporter --out spec/report.txt` When I run `bin/jasmine-headless-webkit -j spec/jasmine/success_with_error/success_with_error.yml -f File:spec/report.txt`
Then the exit status should be 1 Then the exit status should be 1

View File

@ -1,7 +1,7 @@
Feature: Bin - Try to Leave Page Feature: Bin - Try to Leave Page
Scenario: Fail on trying to leave the page Scenario: Fail on trying to leave the page
Given there is no existing "spec/report.txt" file Given there is no existing "spec/report.txt" file
When I run `bin/jasmine-headless-webkit -j spec/jasmine/leave_page/leave_page.yml --format HeadlessFileReporter --out spec/report.txt` When I run `bin/jasmine-headless-webkit -j spec/jasmine/leave_page/leave_page.yml -f File:spec/report.txt`
Then the exit status should be 1 Then the exit status should be 1
And the report file "spec/report.txt" should exist And the report file "spec/report.txt" should exist

View File

@ -1,7 +1,7 @@
Feature: Bin - Try to Click A Button Feature: Bin - Try to Click A Button
Scenario: Don't leave page when clicking a button Scenario: Don't leave page when clicking a button
Given there is no existing "spec/report.txt" file Given there is no existing "spec/report.txt" file
When I run `bin/jasmine-headless-webkit -j spec/jasmine/click_button/click_button.yml --format HeadlessFileReporter --out spec/report.txt` When I run `bin/jasmine-headless-webkit -j spec/jasmine/click_button/click_button.yml -f File:spec/report.txt`
Then the exit status should be 0 Then the exit status should be 0
And the report file "spec/report.txt" should have 0 total, 0 failures, no console usage And the report file "spec/report.txt" should have 0 total, 0 failures, no console usage

View File

@ -1,7 +1,7 @@
Feature: Bin - With CoffeeScript error Feature: Bin - With CoffeeScript error
Scenario: Fail on CoffeeScript error Scenario: Fail on CoffeeScript error
Given there is no existing "spec/report.txt" file Given there is no existing "spec/report.txt" file
When I run `bin/jasmine-headless-webkit -j spec/jasmine/coffeescript_error/coffeescript_error.yml --format HeadlessFileReporter --out spec/report.txt` When I run `bin/jasmine-headless-webkit -j spec/jasmine/coffeescript_error/coffeescript_error.yml -f File:spec/report.txt`
Then the exit status should be 1 Then the exit status should be 1
And the report file "spec/report.txt" should not exist And the report file "spec/report.txt" should not exist

View File

@ -1,7 +1,7 @@
Feature: Bin - With console.log Feature: Use console.log
Scenario: Run a successful test that uses console.log Scenario: Run a successful test that uses console.log
Given there is no existing "spec/report.txt" file Given there is no existing "spec/report.txt" file
When I run `bin/jasmine-headless-webkit -j spec/jasmine/console_log/console_log.yml --format HeadlessFileReporter --out spec/report.txt` When I run `bin/jasmine-headless-webkit -j spec/jasmine/console_log/console_log.yml -f File:spec/report.txt`
Then the exit status should be 2 Then the exit status should be 2
And the report file "spec/report.txt" should have 1 total, 0 failures, yes console usage And the report file "spec/report.txt" should have 1 total, 0 failures, yes console usage

View File

@ -7,18 +7,18 @@ Feature: Reporters
Given I have the default runner options Given I have the default runner options
When I get a runner When I get a runner
And I get a template writer And I get a template writer
Then the template should use the "HeadlessConsoleReporter" reporter to "stdout" Then the template should use the "Console" reporter to "stdout"
And the command to run the runner should not include a report file And the command to run the runner should not include a report file
Scenario: Use a file reporter Scenario: Use a file reporter
Given I have the default runner options Given I have the default runner options
And I have the following reporters: And I have the following reporters:
| Name | File | | Name | File |
| ConsoleReporter | | | Console | |
| FileReporter | file | | File | file |
When I get a runner When I get a runner
And I get a template writer And I get a template writer
Then the template should use the "ConsoleReporter" reporter to "stdout" Then the template should use the "Console" reporter to "stdout"
And the template should use the "FileReporter" reporter to "report:0" And the template should use the "File" reporter to "report:0"
And the command to run the runner should include the report file "file" And the command to run the runner should include the report file "file"

34
features/runner.feature Normal file
View File

@ -0,0 +1,34 @@
Feature: Using the Runner directly
Scenario: Succeed
Given I have the following runner options:
"""
:jasmine_config: spec/jasmine/success/success.yml
:reporters:
- [ 'File', 'spec/report.txt' ]
"""
When I get a runner
And I run the runner
Then the runner should have an exit status of 0
And the report file "spec/report.txt" should have 1 total, 0 failures, no console usage
Scenario: JavaScript Error
Given I have the following runner options:
"""
:jasmine_config: spec/jasmine/success_with_error/success_with_error.yml
"""
When I get a runner
And I run the runner
Then the runner should have an exit status of 1
Scenario: Failure
Given I have the following runner options:
"""
:jasmine_config: spec/jasmine/failure/failure.yml
:reporters:
- [ 'File', 'spec/report.txt' ]
"""
When I get a runner
And I run the runner
Then the runner should have an exit status of 1
And the report file "spec/report.txt" should have 1 total, 1 failure, no console usage

View File

@ -0,0 +1,2 @@
Given /^I have a test suite$/ do
end

View File

@ -0,0 +1,3 @@
Given /^I have the following runner options:$/ do |string|
@options = YAML.load(string)
end

View File

@ -0,0 +1,4 @@
Then /^the file "([^"]*)" should contain a JHW runner$/ do |file|
File.read(file).should include('jasmine.HeadlessReporter')
end

View File

@ -0,0 +1,3 @@
Then /^the output should include "([^"]*)"$/ do |string|
@output.should include(string)
end

View File

@ -0,0 +1,3 @@
Then /^the runner should have an exit status of (\d+)$/ do |exit_status|
@result.should == exit_status.to_i
end

View File

@ -1,6 +1,6 @@
Then /^the template should use the "([^"]*)" reporter to "([^"]*)"$/ do |reporter, target| Then /^the template should use the "([^"]*)" reporter to "([^"]*)"$/ do |reporter, target|
output = @template_writer.render output = @template_writer.render
output.should include(%{jasmine.#{reporter}("#{target}")}) output.should include(%{jasmine.HeadlessReporter.#{reporter}("#{target}")})
end end

View File

@ -0,0 +1,3 @@
When /^I delete the file "([^"]*)"$/ do |file|
FileUtils.rm_f(file)
end

View File

@ -1,4 +1,4 @@
When /^I run `(.*)`$/ do |command| When /^I run `(.*)`$/ do |command|
system command @output = `#{command}`
end end

View File

@ -0,0 +1,4 @@
When /^I run the runner$/ do
@result = @runner.run
end

View File

@ -1,2 +1,7 @@
require 'jasmine-headless-webkit' require 'jasmine-headless-webkit'
After do
FileUtils.rm_f 'spec/report.txt'
FileUtils.rm_f 'spec/runner.html'
end

View File

@ -72,8 +72,8 @@ module Jasmine::Headless
def default_files def default_files
%w{jasmine.js jasmine-html jasmine.css jasmine-extensions %w{jasmine.js jasmine-html jasmine.css jasmine-extensions
intense headless_reporter_result jasmine.HeadlessReporter intense headless_reporter_result jasmine.HeadlessReporter
jasmine.HeadlessFileReporter jasmine.HeadlessConsoleReporter jasmine.HeadlessReporter.File jasmine.HeadlessReporter.Console
jasmine.HeadlessTAPReporter jasmine.HeadlessReporter.Tap
jsDump beautify-html} jsDump beautify-html}
end end

View File

@ -18,7 +18,7 @@ module Jasmine
:enable_cache => true, :enable_cache => true,
:files => [], :files => [],
:reporters => [ :reporters => [
[ 'HeadlessConsoleReporter' ] [ 'Console' ]
] ]
} }
@ -59,8 +59,8 @@ module Jasmine
when '--report' when '--report'
warn REPORT_DEPRECATED_MESSAGE warn REPORT_DEPRECATED_MESSAGE
add_reporter('HeadlessFileReporter', arg) add_reporter('File', arg)
add_reporter('HeadlessConsoleReporter') add_reporter('Console')
when '--runner-out' when '--runner-out'
@options[:runner_output_filename] = arg @options[:runner_output_filename] = arg
when '--jasmine-config', '-j' when '--jasmine-config', '-j'

View File

@ -28,12 +28,13 @@ module Jasmine
class << self class << self
def run(options = {}) def run(options = {})
options = Options.new(options) if !options.kind_of?(Options)
new(options).run new(options).run
end end
end end
def initialize(options) def initialize(options)
options = Options.new(options) if !options.kind_of?(Options)
@options = options @options = options
end end

View File

@ -48,7 +48,7 @@ module Jasmine::Headless
def jhw_reporters def jhw_reporters
reporters.collect do |reporter, output| reporters.collect do |reporter, output|
%{jasmine.getEnv().addReporter(new jasmine.#{reporter}("#{output}"));} %{jasmine.getEnv().addReporter(new jasmine.HeadlessReporter.#{reporter}("#{output}"));}
end.join("\n") end.join("\n")
end end

View File

@ -1,36 +0,0 @@
require 'spec_helper'
require 'tempfile'
describe "jasmine-headless-webkit" do
let(:report) { 'spec/report.txt' }
before do
FileUtils.rm_f report
end
after do
FileUtils.rm_f report
end
describe 'files' do
it 'should list all the files that will be found' do
files = %x{bin/jasmine-headless-webkit -l -j spec/jasmine/success/success.yml}
$?.exitstatus.should == 0
files.lines.to_a.should include(File.expand_path("./spec/jasmine/success/success.js\n"))
files.lines.to_a.should include(File.expand_path("./spec/jasmine/success/success_spec.js\n"))
end
end
describe 'runner-out' do
it 'should write out the runner HTML to the specified path and not run the test' do
runner_path = Tempfile.new('jhw')
runner_path.close
system %{bin/jasmine-headless-webkit -j spec/jasmine/success/success.yml --runner-out #{runner_path.path}}
File.size(runner_path.path).should_not == 0
end
end
end

View File

@ -1,10 +1,8 @@
describe 'HeadlessReporterResult', -> describe 'jasmine.HeadlessReporter', ->
describe 'jasmine.HeadlessConsoleReporter', ->
reporter = null reporter = null
beforeEach -> beforeEach ->
reporter = new jasmine.HeadlessConsoleReporter() reporter = new jasmine.HeadlessReporter.Console()
describe '#formatResultLine', -> describe '#formatResultLine', ->
context 'length = 1', -> context 'length = 1', ->

View File

@ -1,6 +1,6 @@
describe 'jasmine.HeadlessTAPReporter', -> describe 'jasmine.HeadlessReporter.Tap', ->
beforeEach -> beforeEach ->
@reporter = new jasmine.HeadlessTAPReporter() @reporter = new jasmine.HeadlessReporter.Tap()
describe '#reportRunnerResults', -> describe '#reportRunnerResults', ->
it 'should write nothing for nothing', -> it 'should write nothing for nothing', ->

View File

@ -15,9 +15,9 @@ describe Jasmine::Headless::FilesList do
File.expand_path('vendor/assets/javascripts/intense.js'), File.expand_path('vendor/assets/javascripts/intense.js'),
File.expand_path('vendor/assets/javascripts/headless_reporter_result.js'), File.expand_path('vendor/assets/javascripts/headless_reporter_result.js'),
File.expand_path('vendor/assets/javascripts/jasmine.HeadlessReporter.js'), File.expand_path('vendor/assets/javascripts/jasmine.HeadlessReporter.js'),
File.expand_path('vendor/assets/javascripts/jasmine.HeadlessFileReporter.js'), File.expand_path('vendor/assets/javascripts/jasmine.HeadlessReporter.File.js'),
File.expand_path('vendor/assets/javascripts/jasmine.HeadlessConsoleReporter.js'), File.expand_path('vendor/assets/javascripts/jasmine.HeadlessReporter.Console.js'),
File.expand_path('vendor/assets/javascripts/jasmine.HeadlessTAPReporter.js'), File.expand_path('vendor/assets/javascripts/jasmine.HeadlessReporter.Tap.js'),
File.expand_path('vendor/assets/javascripts/jsDump.js'), File.expand_path('vendor/assets/javascripts/jsDump.js'),
File.expand_path('vendor/assets/javascripts/beautify-html.js'), File.expand_path('vendor/assets/javascripts/beautify-html.js'),
] ]

View File

@ -56,7 +56,7 @@ describe Jasmine::Headless::Options do
options.process_option("--report", file) options.process_option("--report", file)
options[:reporters].should == [ [ 'HeadlessFileReporter', file ], [ 'HeadlessConsoleReporter' ] ] options[:reporters].should == [ [ 'File', file ], [ 'Console' ] ]
end end
end end
@ -144,7 +144,7 @@ describe Jasmine::Headless::Options do
context 'no reporters' do context 'no reporters' do
it 'should have the default reporter' do it 'should have the default reporter' do
options[:reporters].should == [ [ 'HeadlessConsoleReporter' ] ] options[:reporters].should == [ [ 'Console' ] ]
end end
end end

View File

@ -93,45 +93,6 @@ describe Jasmine::Headless::Runner do
end end
end end
context 'real tests' do
let(:report) { 'spec/report.txt' }
before do
FileUtils.rm_f report
end
after do
FileUtils.rm_f report
end
it 'should succeed with error code 0' do
Jasmine::Headless::Runner.run(
:jasmine_config => 'spec/jasmine/success/success.yml',
:reporters => [
[ 'HeadlessFileReporter', report ]
]
).should == 0
report.should be_a_report_containing(1, 0, false)
end
it 'should succeed but with javascript error' do
Jasmine::Headless::Runner.run(:jasmine_config => 'spec/jasmine/success_with_error/success_with_error.yml').should == 1
end
it 'should fail on one test' do
Jasmine::Headless::Runner.run(
:jasmine_config => 'spec/jasmine/failure/failure.yml',
:reporters => [
[ 'HeadlessFileReporter', report ]
]
).should == 1
report.should be_a_report_containing(1, 1, false)
report.should contain_a_failing_spec(['failure', 'should fail with error code of 1'])
end
end
describe '#runner_filename' do describe '#runner_filename' do
let(:runner_filename) { runner.runner_filename } let(:runner_filename) { runner.runner_filename }
let(:yaml_output) { 'yaml output' } let(:yaml_output) { 'yaml output' }

View File

@ -1,6 +1,6 @@
#= require jasmine.HeadlessReporter.js #= require jasmine.HeadlessReporter.js
# #
class jasmine.HeadlessConsoleReporter extends jasmine.HeadlessReporter class jasmine.HeadlessReporter.Console extends jasmine.HeadlessReporter
constructor: (@callback = null) -> constructor: (@callback = null) ->
super(@callback) super(@callback)

View File

@ -1,4 +1,6 @@
class jasmine.HeadlessFileReporter extends jasmine.HeadlessReporter #= require jasmine.HeadlessReporter.js
#
class jasmine.HeadlessReporter.File extends jasmine.HeadlessReporter
reportRunnerResults: (runner) -> reportRunnerResults: (runner) ->
super(runner) super(runner)

View File

@ -1,4 +1,6 @@
class jasmine.HeadlessTAPReporter extends jasmine.HeadlessReporter #= require jasmine.HeadlessReporter.js
class jasmine.HeadlessReporter.Tap extends jasmine.HeadlessReporter
constructor: (@outputTarget = null) -> constructor: (@outputTarget = null) ->
super(@outputTarget) super(@outputTarget)

View File

@ -26,35 +26,41 @@ if window.JHW
console.log(data) console.log(data)
data data
puts = (message) ->
JHW.print('stdout', message + "\n")
# handle unloading
window.onbeforeunload = (e) -> window.onbeforeunload = (e) ->
e = e || window.event e = e || window.event
JHW.hasError() JHW.hasError()
JHW.print('stdout', "The code tried to leave the test page. Check for unhandled form submits and link clicks.\n") puts "The code tried to leave the test page. Check for unhandled form submits and link clicks."
if e e.returnValue = 'string' if e
e.returnValue = 'string'
return 'string' return 'string'
window.confirm = (message) -> # script errors
JHW.print('stdout', "#{"[confirm]".foreground('red')} jasmine-headless-webkit can't handle confirm() yet! You should mock window.confirm. Returning true.\n")
true
window.alert = (message) ->
JHW.print('stdout', "[alert] ".foreground('red') + message + "\n")
JHW._hasErrors = false JHW._hasErrors = false
JHW._handleError = (message, lineNumber, sourceURL) -> JHW._handleError = (message, lineNumber, sourceURL) ->
JHW.print('stderr', message + "\n") JHW.print('stderr', message + "\n")
JHW._hasErrors = true JHW._hasErrors = true
false false
JHW._setColors = (useColors) -> # dialogs
Intense.useColors = useColors window.confirm = (message) ->
puts "#{"[confirm]".foreground('red')} jasmine-headless-webkit can't handle confirm() yet! You should mock window.confirm. Returning true."
true
window.alert = (message) ->
puts "[alert] ".foreground('red') + message
# color support
JHW._setColors = (useColors) -> Intense.useColors = useColors
# console.log support
JHW._usedConsole = false JHW._usedConsole = false
JHW.log = (msg) -> JHW.log = (msg) ->
JHW.hasUsedConsole() JHW.hasUsedConsole()
@ -62,7 +68,8 @@ if window.JHW
reporter.consoleLogUsed(msg) if reporter.consoleLogUsed? reporter.consoleLogUsed(msg) if reporter.consoleLogUsed?
JHW._usedConsole = true JHW._usedConsole = true
JHW.print('stdout', msg + "\n")
puts msg
window.CoffeeScriptToFilename = {} window.CoffeeScriptToFilename = {}
window.CSTF = window.CoffeeScriptToFilename window.CSTF = window.CoffeeScriptToFilename

View File

@ -1,21 +1,21 @@
(function() { (function() {
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; }; var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; };
jasmine.HeadlessConsoleReporter = (function() { jasmine.HeadlessReporter.Console = (function() {
__extends(HeadlessConsoleReporter, jasmine.HeadlessReporter); __extends(Console, jasmine.HeadlessReporter);
function HeadlessConsoleReporter(callback) { function Console(callback) {
this.callback = callback != null ? callback : null; this.callback = callback != null ? callback : null;
this._waitRunner = __bind(this._waitRunner, this); this._waitRunner = __bind(this._waitRunner, this);
HeadlessConsoleReporter.__super__.constructor.call(this, this.callback); Console.__super__.constructor.call(this, this.callback);
this.position = 0; this.position = 0;
this.positions = "|/-\\"; this.positions = "|/-\\";
} }
HeadlessConsoleReporter.prototype.reportRunnerResults = function(runner) { Console.prototype.reportRunnerResults = function(runner) {
var result, resultLine, _i, _len, _ref; var result, resultLine, _i, _len, _ref;
HeadlessConsoleReporter.__super__.reportRunnerResults.call(this); Console.__super__.reportRunnerResults.call(this);
this.print("\n"); this.print("\n");
resultLine = this.formatResultLine(this._runtime()); resultLine = this.formatResultLine(this._runtime());
if (this.failedCount === 0) { if (this.failedCount === 0) {
@ -31,16 +31,16 @@
return this.puts("\nTest ordering seed: --seed " + (JHW.getSeed())); return this.puts("\nTest ordering seed: --seed " + (JHW.getSeed()));
}; };
HeadlessConsoleReporter.prototype.reportRunnerStarting = function(runner) { Console.prototype.reportRunnerStarting = function(runner) {
HeadlessConsoleReporter.__super__.reportRunnerStarting.call(this, runner); Console.__super__.reportRunnerStarting.call(this, runner);
if (!this.hasError()) { if (!this.hasError()) {
return this.puts("\nRunning Jasmine specs...".bright()); return this.puts("\nRunning Jasmine specs...".bright());
} }
}; };
HeadlessConsoleReporter.prototype.reportSpecResults = function(spec) { Console.prototype.reportSpecResults = function(spec) {
var _this = this; var _this = this;
HeadlessConsoleReporter.__super__.reportSpecResults.call(this, spec); Console.__super__.reportSpecResults.call(this, spec);
return this._reportSpecResult(spec, { return this._reportSpecResult(spec, {
success: function(results) { success: function(results) {
return _this.print('.'.foreground('green')); return _this.print('.'.foreground('green'));
@ -66,7 +66,7 @@
}); });
}; };
HeadlessConsoleReporter.prototype.reportSpecWaiting = function() { Console.prototype.reportSpecWaiting = function() {
if (!this.timer) { if (!this.timer) {
this.timer = true; this.timer = true;
this.first = true; this.first = true;
@ -74,7 +74,7 @@
} }
}; };
HeadlessConsoleReporter.prototype.reportSpecRunning = function() { Console.prototype.reportSpecRunning = function() {
if (this.timer) { if (this.timer) {
clearTimeout(this.timer); clearTimeout(this.timer);
this.timer = null; this.timer = null;
@ -82,7 +82,7 @@
} }
}; };
HeadlessConsoleReporter.prototype.formatResultLine = function(runtime) { Console.prototype.formatResultLine = function(runtime) {
var line; var line;
line = []; line = [];
line.push(this.length); line.push(this.length);
@ -94,7 +94,7 @@
return line.join(' '); return line.join(' ');
}; };
HeadlessConsoleReporter.prototype._waitRunner = function() { Console.prototype._waitRunner = function() {
var _this = this; var _this = this;
return this.timer = setTimeout(function() { return this.timer = setTimeout(function() {
if (_this.timer) { if (_this.timer) {
@ -108,7 +108,7 @@
}, 750); }, 750);
}; };
return HeadlessConsoleReporter; return Console;
})(); })();

View File

@ -1,29 +1,29 @@
(function() { (function() {
var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; }; var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; };
jasmine.HeadlessFileReporter = (function() { jasmine.HeadlessReporter.File = (function() {
__extends(HeadlessFileReporter, jasmine.HeadlessReporter); __extends(File, jasmine.HeadlessReporter);
function HeadlessFileReporter() { function File() {
HeadlessFileReporter.__super__.constructor.apply(this, arguments); File.__super__.constructor.apply(this, arguments);
} }
HeadlessFileReporter.prototype.reportRunnerResults = function(runner) { File.prototype.reportRunnerResults = function(runner) {
var output; var output;
HeadlessFileReporter.__super__.reportRunnerResults.call(this, runner); File.__super__.reportRunnerResults.call(this, runner);
output = "TOTAL||" + this.length + "||" + this.failedCount + "||" + (this._runtime()) + "||" + (JHW._hasErrors ? "T" : "F"); output = "TOTAL||" + this.length + "||" + this.failedCount + "||" + (this._runtime()) + "||" + (JHW._hasErrors ? "T" : "F");
this.puts(output); this.puts(output);
return this.puts("SEED||" + (JHW.getSeed())); return this.puts("SEED||" + (JHW.getSeed()));
}; };
HeadlessFileReporter.prototype.consoleLogUsed = function(msg) { File.prototype.consoleLogUsed = function(msg) {
return this.puts("CONSOLE||" + msg); return this.puts("CONSOLE||" + msg);
}; };
HeadlessFileReporter.prototype.reportSpecResults = function(spec) { File.prototype.reportSpecResults = function(spec) {
var _this = this; var _this = this;
HeadlessFileReporter.__super__.reportSpecResults.call(this, spec); File.__super__.reportSpecResults.call(this, spec);
return this._reportSpecResult(spec, { return this._reportSpecResult(spec, {
success: function(results) { success: function(results) {
return _this.puts("PASS||" + spec.getJHWSpecInformation()); return _this.puts("PASS||" + spec.getJHWSpecInformation());
@ -34,7 +34,7 @@
}); });
}; };
return HeadlessFileReporter; return File;
})(); })();

View File

@ -1,26 +1,26 @@
(function() { (function() {
var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; }; var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; };
jasmine.HeadlessTAPReporter = (function() { jasmine.HeadlessReporter.Tap = (function() {
__extends(HeadlessTAPReporter, jasmine.HeadlessReporter); __extends(Tap, jasmine.HeadlessReporter);
function HeadlessTAPReporter(outputTarget) { function Tap(outputTarget) {
this.outputTarget = outputTarget != null ? outputTarget : null; this.outputTarget = outputTarget != null ? outputTarget : null;
HeadlessTAPReporter.__super__.constructor.call(this, this.outputTarget); Tap.__super__.constructor.call(this, this.outputTarget);
this.output = []; this.output = [];
} }
HeadlessTAPReporter.prototype.reportRunnerResults = function(runner) { Tap.prototype.reportRunnerResults = function(runner) {
HeadlessTAPReporter.__super__.reportRunnerResults.call(this, runner); Tap.__super__.reportRunnerResults.call(this, runner);
if (this.output.length > 0) this.output.unshift("1.." + this.output.length); if (this.output.length > 0) this.output.unshift("1.." + this.output.length);
return this.puts(this.output.join("\n")); return this.puts(this.output.join("\n"));
}; };
HeadlessTAPReporter.prototype.reportSpecResults = function(spec) { Tap.prototype.reportSpecResults = function(spec) {
var description, index; var description, index;
var _this = this; var _this = this;
HeadlessTAPReporter.__super__.reportSpecResults.call(this, spec); Tap.__super__.reportSpecResults.call(this, spec);
index = this.output.length + 1; index = this.output.length + 1;
description = spec.getSpecSplitName().join(' '); description = spec.getSpecSplitName().join(' ');
return this._reportSpecResult(spec, { return this._reportSpecResult(spec, {
@ -33,7 +33,7 @@
}); });
}; };
return HeadlessTAPReporter; return Tap;
})(); })();

View File

@ -1,3 +1,5 @@
(function() {
var puts;
if (window.JHW) { if (window.JHW) {
window.console = { window.console = {
@ -35,26 +37,29 @@
return data; return data;
} }
}; };
puts = function(message) {
return JHW.print('stdout', message + "\n");
};
window.onbeforeunload = function(e) { window.onbeforeunload = function(e) {
e = e || window.event; e = e || window.event;
JHW.hasError(); JHW.hasError();
JHW.print('stdout', "The code tried to leave the test page. Check for unhandled form submits and link clicks.\n"); puts("The code tried to leave the test page. Check for unhandled form submits and link clicks.");
if (e) e.returnValue = 'string'; if (e) e.returnValue = 'string';
return 'string'; return 'string';
}; };
window.confirm = function(message) {
JHW.print('stdout', "" + ("[confirm]".foreground('red')) + " jasmine-headless-webkit can't handle confirm() yet! You should mock window.confirm. Returning true.\n");
return true;
};
window.alert = function(message) {
return JHW.print('stdout', "[alert] ".foreground('red') + message + "\n");
};
JHW._hasErrors = false; JHW._hasErrors = false;
JHW._handleError = function(message, lineNumber, sourceURL) { JHW._handleError = function(message, lineNumber, sourceURL) {
JHW.print('stderr', message + "\n"); JHW.print('stderr', message + "\n");
JHW._hasErrors = true; JHW._hasErrors = true;
return false; return false;
}; };
window.confirm = function(message) {
puts("" + ("[confirm]".foreground('red')) + " jasmine-headless-webkit can't handle confirm() yet! You should mock window.confirm. Returning true.");
return true;
};
window.alert = function(message) {
return puts("[alert] ".foreground('red') + message);
};
JHW._setColors = function(useColors) { JHW._setColors = function(useColors) {
return Intense.useColors = useColors; return Intense.useColors = useColors;
}; };
@ -68,10 +73,12 @@
if (reporter.consoleLogUsed != null) reporter.consoleLogUsed(msg); if (reporter.consoleLogUsed != null) reporter.consoleLogUsed(msg);
} }
JHW._usedConsole = true; JHW._usedConsole = true;
return JHW.print('stdout', msg + "\n"); return puts(msg);
}; };
} }
window.CoffeeScriptToFilename = {}; window.CoffeeScriptToFilename = {};
window.CSTF = window.CoffeeScriptToFilename; window.CSTF = window.CoffeeScriptToFilename;
}).call(this);