| Class | Test::Unit::UI::SpecDox::TestRunner |
| In: |
lib/test/spec/dox.rb
|
| Parent: | Test::Unit::UI::Console::TestRunner |
# File lib/test/spec/dox.rb, line 11
11: def add_fault(fault)
12: if fault.kind_of? Test::Spec::Disabled
13: @disabled += 1
14: output_no_nl " (disabled)"
15: elsif fault.kind_of? Test::Spec::Empty
16: @empty += 1
17: output_no_nl " (empty)"
18: else
19: @faults << fault
20: word = fault.class.name[/(.*::)?(.*)/, 2].upcase
21: output_no_nl " (#{word} - #{@faults.size})"
22: end
23: end
# File lib/test/spec/dox.rb, line 34
34: def finished(elapsed_time)
35: nl
36: output "Finished in #{elapsed_time} seconds."
37: @faults.each_with_index do |fault, index|
38: nl
39: output("%3d) %s" % [index + 1, fault.long_display])
40: end
41: nl
42: output_result
43: end
# File lib/test/spec/dox.rb, line 138
138: def indent(depth)
139: @indent = depth
140: @prefix = " " * depth
141: end
# File lib/test/spec/dox.rb, line 117
117: def output_heading(heading)
118: output "#{@prefix}#{heading}"
119: end
# File lib/test/spec/dox.rb, line 113
113: def output_item(item)
114: output_no_nl "#{@prefix}- #{item}"
115: end
# File lib/test/spec/dox.rb, line 108
108: def output_no_nl(something, level=NORMAL)
109: @io.write(something) if (output?(level))
110: @io.flush
111: end
# File lib/test/spec/dox.rb, line 45
45: def output_result
46: if @disabled > 0
47: disabled = ", #{@disabled} disabled"
48: else
49: disabled = ""
50: end
51:
52: if @empty > 0
53: empty = ", #{@empty} empty"
54: else
55: empty = ""
56: end
57:
58: r = ("%d specifications#{disabled}#{empty} " +
59: "(%d requirements), %d failures") % [
60: @result.run_count, @result.assertion_count, @result.failure_count]
61: r << ", #{@result.error_count} errors" if @result.error_count > 0
62: output r
63: end
# File lib/test/spec/dox.rb, line 7 7: def setup_mediator 8: @mediator = create_mediator(@suite) 9: end
# File lib/test/spec/dox.rb, line 143
143: def special_test?(name)
144: name =~ /\Atest_spec \{.*?\} (-1 BEFORE|AFTER) ALL\(/
145: end
# File lib/test/spec/dox.rb, line 25
25: def started(result)
26: @result = result
27: @context = nil
28: @contexts = []
29: @disabled = 0
30: @empty = 0
31: indent 0
32: end
# File lib/test/spec/dox.rb, line 96
96: def test_finished(name)
97: return if special_test? name
98:
99: # Did any assertion run?
100: if @assertions == @result.assertion_count && @prevdisabled == @disabled
101: add_fault Test::Spec::Empty.new(@specname)
102: end
103:
104: # Don't let empty contexts clutter up the output.
105: nl unless name =~ /\Adefault_test\(/
106: end
# File lib/test/spec/dox.rb, line 65
65: def test_started(name)
66: return if special_test? name
67:
68: contextname, @specname = unmangle name
69: return if contextname.nil? || @specname.nil?
70:
71: if @context != contextname
72: @context = contextname
73:
74: @old_contexts = @contexts
75: @contexts = @context.split("\t")
76:
77: common = 0
78: @contexts.zip(@old_contexts) { |a, b|
79: break if a != b
80: common += 1
81: }
82:
83: nl if common == 0
84:
85: @contexts[common..-1].each_with_index { |head, i|
86: indent common + i
87: output_heading head
88: }
89: end
90:
91: @assertions = @result.assertion_count
92: @prevdisabled = @disabled
93: output_item @specname
94: end
# File lib/test/spec/dox.rb, line 121
121: def unmangle(name)
122: if name =~ /\Atest_spec \{(.*?)\} \d+ \[(.*)\]/
123: contextname = $1
124: specname = $2
125: elsif name =~ /test_(.*?)\((.*)\)$/
126: specname = $1
127: contextname = $2
128:
129: contextname.gsub!(/^Test\B|\BTest$/, '')
130: specname.gsub!(/_/, ' ')
131: else
132: contextname = specname = nil
133: end
134:
135: [contextname, specname]
136: end