Class: JUnitFormatter
Instance Attribute Summary
#exceptions, #tally, #timer
Instance Method Summary
collapse
#switch
#abort, #before, #exception?, #failure?, #print
Constructor Details
Returns a new instance of JUnitFormatter.
6
7
8
9
10
|
# File 'lib/extensions/mspec/mspec/runner/formatters/junit.rb', line 6
def initialize(out=nil)
super
@tests = []
@spec_path = ''
end
|
Instance Method Details
#after(state = nil) ⇒ Object
25
26
27
28
|
# File 'lib/extensions/mspec/mspec/runner/formatters/junit.rb', line 25
def after(state = nil)
super
@tests << {:test => state, :spec => @spec_path, :exception => false} unless exception?
end
|
#exception(exception) ⇒ Object
30
31
32
33
|
# File 'lib/extensions/mspec/mspec/runner/formatters/junit.rb', line 30
def exception(exception)
super
@tests << {:test => exception, :spec => @spec_path, :exception => true}
end
|
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/extensions/mspec/mspec/runner/formatters/junit.rb', line 35
def finish
switch
time = @timer.elapsed
formatted_time = "%.1f" % time
tests = @tally.counter.examples
errors = @tally.counter.errors
failures = @tally.counter.failures
print "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n <testsuites\n testCount=\"\#{tests}\"\n errorCount=\"\#{errors}\"\n failureCount=\"\#{failures}\"\n timeCount=\"\#{formatted_time}\" time=\"\#{formatted_time}\">\n <testsuite\n tests=\"\#{tests}\"\n errors=\"\#{errors}\"\n failures=\"\#{failures}\"\n time=\"\#{formatted_time}\"\n name=\"Spec Output For \#{::RUBY_NAME} (\#{::RUBY_VERSION})\">\n\n XML\n\n @tests.each do |h|\n description = encode_for_xml h[:test].description\n\n spec_class = h[:spec]\n\n if description =~ /^([^\\s\\.\\|:]+)(#|\\.|::)([^\\s]+)/i\n spec_class = $1\n end \n\n#RHO\n# printf <<-XML, \"Spec\", description, 0.0\n# <testcase classname=\"%s\" name=\"%s\" time=\"%f\">\n# XML\n print <<-XML\n <testcase classname=\"\#{spec_class}\" name=\"\#{description}\" time=\"0.0\">\n XML\n#RHO\n if h[:exception]\n outcome = h[:test].failure? ? \"failure\" : \"error\"\n message = encode_for_xml h[:test].message\n backtrace = encode_for_xml h[:test].backtrace\n print <<-XML\n <\#{outcome} message=\"error in \#{description}\" type=\"\#{outcome}\">\n \#{message}\n \#{backtrace}\n </\#{outcome}>\n XML\n end\n print <<-XML\n </testcase>\n XML\n end\n\n print <<-XML\n </testsuite>\n </testsuites>\n XML\nend\n"
|
#load(state = nil) ⇒ Object
17
18
19
20
21
22
23
|
# File 'lib/extensions/mspec/mspec/runner/formatters/junit.rb', line 17
def load(state = nil)
spec_path, spec_file = File.split((MSpec.retrieve(:file)+'.rb').gsub(/^spec\//,''))
if (spec_path.empty? || spec_path.nil?) && spec_file =~ /(.*)_spec/i
spec_path = $1
end
@spec_path = encode_for_xml( spec_path.gsub('/','.') )
end
|
12
13
14
15
|
# File 'lib/extensions/mspec/mspec/runner/formatters/junit.rb', line 12
def register
super
MSpec.register :load, self
end
|