add_fault(fault)
click to toggle source
def add_fault(fault)
if fault.kind_of? Test::Spec::Disabled
@disabled += 1
output_no_nl " (disabled)"
elsif fault.kind_of? Test::Spec::Empty
@empty += 1
output_no_nl " (empty)"
else
@faults << fault
word = fault.class.name[/(.*::)?(.*)/, 2].upcase
output_no_nl " (#{word} - #{@faults.size})"
end
end
finished(elapsed_time)
click to toggle source
def finished(elapsed_time)
nl
output "Finished in #{elapsed_time} seconds."
@faults.each_with_index do |fault, index|
nl
output("%3d) %s" % [index + 1, fault.long_display])
end
nl
output_result
end
indent(depth)
click to toggle source
def indent(depth)
@indent = depth
@prefix = " " * depth
end
output_heading(heading)
click to toggle source
def output_heading(heading)
output "#{@prefix}#{heading}"
end
output_item(item)
click to toggle source
def output_item(item)
output_no_nl "#{@prefix}- #{item}"
end
output_no_nl(something, level=NORMAL)
click to toggle source
def output_no_nl(something, level=NORMAL)
@io.write(something) if (output?(level))
@io.flush
end
output_result()
click to toggle source
def output_result
if @disabled > 0
disabled = ", #{@disabled} disabled"
else
disabled = ""
end
if @empty > 0
empty = ", #{@empty} empty"
else
empty = ""
end
r = ("%d specifications#{disabled}#{empty} " +
"(%d requirements), %d failures") % [
@result.run_count, @result.assertion_count, @result.failure_count]
r << ", #{@result.error_count} errors" if @result.error_count > 0
output r
end
special_test?(name)
click to toggle source
def special_test?(name)
name =~ /\Atest_spec \{.*?\} (-1 BEFORE|AFTER) ALL\(/
end
started(result)
click to toggle source
def started(result)
@io ||= @output
@result = result
@context = nil
@contexts = []
@disabled = 0
@empty = 0
indent 0
end
test_finished(name)
click to toggle source
def test_finished(name)
return if special_test? name
if @assertions == @result.assertion_count && @prevdisabled == @disabled
add_fault Test::Spec::Empty.new(@specname)
end
nl unless name =~ /\Adefault_test\(/
end
test_started(name)
click to toggle source
def test_started(name)
return if special_test? name
contextname, @specname = unmangle name
return if contextname.nil? || @specname.nil?
if @context != contextname
@context = contextname
@old_contexts = @contexts
@contexts = @context.split("\t")
common = 0
@contexts.zip(@old_contexts) { |a, b|
break if a != b
common += 1
}
nl if common == 0
@contexts[common..-1].each_with_index { |head, i|
indent common + i
output_heading head
}
end
@assertions = @result.assertion_count
@prevdisabled = @disabled
output_item @specname
end
unmangle(name)
click to toggle source
def unmangle(name)
if name =~ /\Atest_spec \{(.*?)\} \d+ \[(.*)\]/
contextname = $1
specname = $2
elsif name =~ /test_(.*?)\((.*)\)$/
specname = $1
contextname = $2
contextname.gsub!(/^Test\B|\BTest$/, '')
specname.gsub!(/_/, ' ')
else
contextname = specname = nil
end
[contextname, specname]
end