better support for re-running specific specs and getting information on which specs failed

This commit is contained in:
John Bintz 2011-09-06 16:01:10 -04:00
parent 183bd93d31
commit 6bf64edb32
7 changed files with 36 additions and 10 deletions

1
.gitignore vendored
View File

@ -12,3 +12,4 @@ moc_*.*
hydra-runner.log hydra-runner.log
jhw-test jhw-test
.jhw-cache/ .jhw-cache/
_site/

View File

@ -27,7 +27,7 @@ end
def compile def compile
#system %{cd ext/jasmine-webkit-specrunner && ruby test.rb && ruby extconf.rb} #system %{cd ext/jasmine-webkit-specrunner && ruby test.rb && ruby extconf.rb}
system %{cd ext/jasmine-webkit-specrunner && ruby extconf.rb} system %{cd ext/jasmine-webkit-specrunner && ruby test.rb && ruby extconf.rb}
end end
compile compile

View File

@ -10,6 +10,7 @@ module Jasmine
class ConsoleLogUsage < StandardError ; end class ConsoleLogUsage < StandardError ; end
class JasmineConfigNotFound < Errno::ENOENT ; end class JasmineConfigNotFound < Errno::ENOENT ; end
class InvalidReport < StandardError ; end
end end
end end

View File

@ -31,12 +31,12 @@ module Jasmine::Headless
end end
def has_used_console? def has_used_console?
@report.any? { |entry| entry.class == Jasmine::Headless::ReportMessage::Console } @report.any? { |entry| entry.kind_of?(Jasmine::Headless::ReportMessage::Console) }
end end
def has_failed_on?(statement) def has_failed_on?(statement)
@report.any? { |entry| @report.any? { |entry|
if entry.class == Jasmine::Headless::ReportMessage::Fail if entry.kind_of?(Jasmine::Headless::ReportMessage::Fail)
entry.statement == statement entry.statement == statement
end end
} }
@ -46,6 +46,12 @@ module Jasmine::Headless
last_total != nil last_total != nil
end end
def failed_files
@report.find_all { |entry|
entry.kind_of?(Jasmine::Headless::ReportMessage::Fail)
}.collect(&:filename).uniq
end
private private
def last_total def last_total

View File

@ -17,6 +17,10 @@ module Jasmine::Headless::ReportMessage
def ==(other) def ==(other)
self.statement == other.statement && self.file_info == other.file_info self.statement == other.statement && self.file_info == other.file_info
end end
def filename
file_info.split(":").first
end
end end
end end

View File

@ -0,0 +1,11 @@
require 'spec_helper'
describe Jasmine::Headless::ReportMessage::Spec do
let(:filename) { 'file.js' }
let(:spec) { described_class.new("Test", "#{filename}:23") }
subject { spec }
its(:filename) { should == filename }
end

View File

@ -18,21 +18,23 @@ describe Jasmine::Headless::Report do
before do before do
File.open(file, 'wb') { |fh| fh.puts <<-REPORT } File.open(file, 'wb') { |fh| fh.puts <<-REPORT }
PASS||Statement||One||file.js:23 PASS||Statement||One||file.js:23
FAIL||Statement||Two||file.js:23 FAIL||Statement||Two||file2.js:23
FAIL||Statement||Three||file2.js:23
CONSOLE||Yes CONSOLE||Yes
ERROR||Uh oh||file.js:23 ERROR||Uh oh||file3.js:23
TOTAL||1||2||3||T TOTAL||1||2||3||T
REPORT REPORT
end end
it 'should read the report file' do it 'should read the report file' do
report.length.should == 5 report.length.should == 6
report[0].should == Jasmine::Headless::ReportMessage::Pass.new("Statement One", "file.js:23") report[0].should == Jasmine::Headless::ReportMessage::Pass.new("Statement One", "file.js:23")
report[1].should == Jasmine::Headless::ReportMessage::Fail.new("Statement Two", "file.js:23") report[1].should == Jasmine::Headless::ReportMessage::Fail.new("Statement Two", "file2.js:23")
report[2].should == Jasmine::Headless::ReportMessage::Console.new("Yes") report[2].should == Jasmine::Headless::ReportMessage::Fail.new("Statement Three", "file2.js:23")
report[3].should == Jasmine::Headless::ReportMessage::Error.new("Uh oh", "file.js:23") report[3].should == Jasmine::Headless::ReportMessage::Console.new("Yes")
report[4].should == Jasmine::Headless::ReportMessage::Total.new(1, 2, 3, true) report[4].should == Jasmine::Headless::ReportMessage::Error.new("Uh oh", "file3.js:23")
report[5].should == Jasmine::Headless::ReportMessage::Total.new(1, 2, 3, true)
report.total.should == 1 report.total.should == 1
report.failed.should == 2 report.failed.should == 2
@ -42,6 +44,7 @@ REPORT
report.should be_valid report.should be_valid
report.should have_failed_on("Statement Two") report.should have_failed_on("Statement Two")
report.failed_files.should == [ 'file2.js' ]
end end
end end
end end