make sure reports don't blow up with multi-line console messages

This commit is contained in:
John Bintz 2011-09-08 12:17:50 -04:00
parent d8023afaee
commit a8b066ee50
2 changed files with 31 additions and 4 deletions

View File

@ -20,13 +20,20 @@ module Jasmine::Headless
end
def process
last_message = nil
@report = File.readlines(file).collect do |line|
type, *parts = line.split('||', -1)
parts.last.strip!
Jasmine::Headless::ReportMessage.const_get(
Jasmine::Headless::ReportMessage.constants.find { |k| k.to_s.downcase == type.downcase }
).new_from_parts(parts)
if !(report_klass = report_class_for(type))
if last_message.kind_of?(Jasmine::Headless::ReportMessage::Console)
last_message.message << "\n"
last_message.message << line.strip
end
else
parts.last.strip!
last_message = report_klass.new_from_parts(parts)
end
end
self
end
@ -58,6 +65,12 @@ module Jasmine::Headless
def last_total
@report.reverse.find { |entry| entry.respond_to?(:total) }
end
def report_class_for(type)
if constant = ReportMessage.constants.find { |k| k.to_s.downcase == type.downcase }
ReportMessage.const_get(constant)
end
end
end
end

View File

@ -60,6 +60,20 @@ REPORT
report.failed_files.should == []
end
end
context 'multi line console' do
before do
File.open(file, 'wb') { |fh| fh.puts <<-REPORT }
CONSOLE||test
test2
TOTAL||1||2||3||T
REPORT
end
it 'should read the report file' do
report[0].should == Jasmine::Headless::ReportMessage::Console.new("test\ntest2")
end
end
end
end