Class: Webspicy::Tester::Reporter::JunitXmlFile
Constant Summary
collapse
- TPL =
<<~XML
<?xml version="1.0" encoding="UTF-8"?>
<testsuites
disabled="{{counts.disabled}}"
errors="{{counts.errors}}"
failures="{{counts.failures}}"
tests="{{counts.total}}"
time="{{time}}s"
>
{{#testsuites}}
<testsuite
name="{{name}}"
tests="{{counts.total}}"
errors="{{counts.errors}}"
failures="{{counts.failures}}"
time="{{time}}s"
>
{{#testcases}}
<testcase
name="{{name}}"
assertions="{{assert}}"
classname="{{classname}}"
status=""
time="{{time}}s"
>
{{#errors}}
<error
message="{{message}}"
type="{{type}}"
></error>
{{/errors}}
{{#failures}}
<failure
message="{{message}}"
type="{{type}}"
></failure>
{{/failures}}
</testcase>
{{/testcases}}
</testsuite>
{{/testsuites}}
</testsuites>
XML
ErrorCount, HOOKS
Instance Attribute Summary collapse
#io, #tester
Instance Method Summary
collapse
#find, #init
colorize, colorize_error, colorize_highlight, colorize_section, colorize_success
Constructor Details
#initialize(path_or_io = STDOUT) ⇒ JunitXmlFile
Returns a new instance of JunitXmlFile.
50
51
52
53
|
# File 'lib/webspicy/tester/reporter/junit_xml_file.rb', line 50
def initialize(path_or_io = STDOUT)
@path_or_io = path_or_io
path_or_io.parent.mkdir_p if path_or_io.is_a?(Path)
end
|
Instance Attribute Details
#template_data ⇒ Object
Returns the value of attribute template_data.
55
56
57
|
# File 'lib/webspicy/tester/reporter/junit_xml_file.rb', line 55
def template_data
@template_data
end
|
#timer_all ⇒ Object
Returns the value of attribute timer_all.
55
56
57
|
# File 'lib/webspicy/tester/reporter/junit_xml_file.rb', line 55
def timer_all
@timer_all
end
|
#timer_specification ⇒ Object
Returns the value of attribute timer_specification.
55
56
57
|
# File 'lib/webspicy/tester/reporter/junit_xml_file.rb', line 55
def timer_specification
@timer_specification
end
|
#timer_testcase ⇒ Object
Returns the value of attribute timer_testcase.
55
56
57
|
# File 'lib/webspicy/tester/reporter/junit_xml_file.rb', line 55
def timer_testcase
@timer_testcase
end
|
Instance Method Details
#after_all ⇒ Object
65
66
67
|
# File 'lib/webspicy/tester/reporter/junit_xml_file.rb', line 65
def after_all
template_data.time = Time.now - timer_all
end
|
#before_all ⇒ Object
57
58
59
60
61
62
63
|
# File 'lib/webspicy/tester/reporter/junit_xml_file.rb', line 57
def before_all
@timer_all = Time.now
@template_data = OpenStruct.new({
counts: Hash.new{|h,k| h[k] = 0 },
testsuites: []
})
end
|
#before_specification ⇒ Object
69
70
71
72
73
74
75
76
|
# File 'lib/webspicy/tester/reporter/junit_xml_file.rb', line 69
def before_specification
@timer_specification = Time.now
template_data.testsuites << OpenStruct.new({
:name => specification.name,
:counts => Hash.new{|h,k| h[k] = 0 },
:testcases => []
})
end
|
#before_test_case ⇒ Object
95
96
97
98
99
100
101
102
103
104
105
106
|
# File 'lib/webspicy/tester/reporter/junit_xml_file.rb', line 95
def before_test_case
@timer_testcase = Time.now
template_data.testsuites[-1].testcases << OpenStruct.new({
:name => test_case.description,
:assert => test_case.assert.length,
:classname => test_case.class.name.to_s.gsub(/::/, "."),
:failures => [],
:errors => [],
})
template_data.counts[:total] += 1
template_data.testsuites[-1].counts[:total] += 1
end
|
#check_error(check, ex) ⇒ Object
121
122
123
124
125
126
127
128
|
# File 'lib/webspicy/tester/reporter/junit_xml_file.rb', line 121
def check_error(check, ex)
template_data.testsuites[-1].testcases[-1].errors << OpenStruct.new({
:type => check.class.name,
:message => ex.message
})
template_data.counts[:errors] += 1
template_data.testsuites[-1].counts[:errors] += 1
end
|
#check_failure(check, ex) ⇒ Object
112
113
114
115
116
117
118
119
|
# File 'lib/webspicy/tester/reporter/junit_xml_file.rb', line 112
def check_failure(check, ex)
template_data.testsuites[-1].testcases[-1].failures << OpenStruct.new({
:type => check.class.name,
:message => ex.message
})
template_data.counts[:failures] += 1
template_data.testsuites[-1].counts[:failures] += 1
end
|
#report ⇒ Object
130
131
132
133
134
135
|
# File 'lib/webspicy/tester/reporter/junit_xml_file.rb', line 130
def report
require 'mustache'
with_io do |io|
io << Mustache.render(TPL, template_data)
end
end
|
#spec_file_error(e) ⇒ Object
82
83
84
85
86
87
88
89
90
91
92
93
|
# File 'lib/webspicy/tester/reporter/junit_xml_file.rb', line 82
def spec_file_error(e)
template_data.testsuites[-1].testcases << OpenStruct.new({
:name => "Specification can be loaded",
:assert => 1,
:classname => "Webspicy.Specification",
:failures => [],
:errors => [OpenStruct.new({
:type => e.class,
:message => e.message
})]
})
end
|
#specification_done ⇒ Object
78
79
80
|
# File 'lib/webspicy/tester/reporter/junit_xml_file.rb', line 78
def specification_done
template_data.testsuites[-1].time = Time.now - timer_specification
end
|
#test_case_done ⇒ Object
108
109
110
|
# File 'lib/webspicy/tester/reporter/junit_xml_file.rb', line 108
def test_case_done
template_data.testsuites[-1].testcases[-1].time = Time.now - timer_testcase
end
|