Class: PDK::Report::Event
- Inherits:
-
Object
- Object
- PDK::Report::Event
- Defined in:
- lib/pdk/report/event.rb
Instance Attribute Summary collapse
-
#column ⇒ Integer
readonly
The column number in the line of the file that the event is in reference to.
-
#file ⇒ String
readonly
The path to the file that the event is in reference to.
-
#line ⇒ Integer
readonly
The line number in the file that the event is in reference to.
-
#message ⇒ String
readonly
A freeform String containing a human readable message describing the event.
-
#severity ⇒ String
readonly
The severity of the event as reported by the underlying tool.
-
#source ⇒ String
readonly
The name of the source of the event (usually the name of the validation or testing tool that generated the event).
-
#state ⇒ Symbol
readonly
The state of the event.
-
#test ⇒ String
readonly
The name of the test that generated the event.
-
#trace ⇒ Array
readonly
Array of full stack trace lines associated with event.
Instance Method Summary collapse
-
#error? ⇒ Boolean
Checks if the event is the result of a test that could not complete due to an error.
-
#failure? ⇒ Boolean
Checks if the event is the result of a failing test.
-
#initialize(data) ⇒ Event
constructor
Initailises a new PDK::Report::Event object.
-
#pass? ⇒ Boolean
Checks if the event is the result of a passing test.
-
#rspec_puppet_coverage? ⇒ Boolean
Checks if the event stores the result of an rspec-puppet coverage check.
-
#skipped? ⇒ Boolean
Checks if the event is the result of test that was not run.
-
#to_junit ⇒ REXML::Element
Renders the event as a JUnit XML testcase.
-
#to_text ⇒ String
Renders the event in a clang style text format.
Constructor Details
#initialize(data) ⇒ Event
Initailises a new PDK::Report::Event object.
54 55 56 57 58 |
# File 'lib/pdk/report/event.rb', line 54 def initialize(data) sanitise_data(data).each do |key, value| instance_variable_set(:"@#{key}", value) end end |
Instance Attribute Details
#column ⇒ Integer (readonly)
Returns The column number in the line of the file that the event is in reference to.
16 17 18 |
# File 'lib/pdk/report/event.rb', line 16 def column @column end |
#file ⇒ String (readonly)
Returns The path to the file that the event is in reference to.
8 9 10 |
# File 'lib/pdk/report/event.rb', line 8 def file @file end |
#line ⇒ Integer (readonly)
Returns The line number in the file that the event is in reference to.
12 13 14 |
# File 'lib/pdk/report/event.rb', line 12 def line @line end |
#message ⇒ String (readonly)
Returns A freeform String containing a human readable message describing the event.
24 25 26 |
# File 'lib/pdk/report/event.rb', line 24 def @message end |
#severity ⇒ String (readonly)
Returns The severity of the event as reported by the underlying tool.
28 29 30 |
# File 'lib/pdk/report/event.rb', line 28 def severity @severity end |
#source ⇒ String (readonly)
Returns The name of the source of the event (usually the name of the validation or testing tool that generated the event).
20 21 22 |
# File 'lib/pdk/report/event.rb', line 20 def source @source end |
#state ⇒ Symbol (readonly)
Returns The state of the event. :passed, :failure, :error, or :skipped.
35 36 37 |
# File 'lib/pdk/report/event.rb', line 35 def state @state end |
#test ⇒ String (readonly)
Returns The name of the test that generated the event.
31 32 33 |
# File 'lib/pdk/report/event.rb', line 31 def test @test end |
#trace ⇒ Array (readonly)
Returns Array of full stack trace lines associated with event.
38 39 40 |
# File 'lib/pdk/report/event.rb', line 38 def trace @trace end |
Instance Method Details
#error? ⇒ Boolean
Checks if the event is the result of a test that could not complete due to an error.
71 72 73 |
# File 'lib/pdk/report/event.rb', line 71 def error? state == :error end |
#failure? ⇒ Boolean
Checks if the event is the result of a failing test.
78 79 80 |
# File 'lib/pdk/report/event.rb', line 78 def failure? state == :failure end |
#pass? ⇒ Boolean
Checks if the event is the result of a passing test.
63 64 65 |
# File 'lib/pdk/report/event.rb', line 63 def pass? state == :passed end |
#rspec_puppet_coverage? ⇒ Boolean
Checks if the event stores the result of an rspec-puppet coverage check.
Due to the implementation details of this check, the ‘file` value for this event will always point to the coverage.rb file in rspec-puppet, making it easy to filter out.
99 100 101 102 |
# File 'lib/pdk/report/event.rb', line 99 def rspec_puppet_coverage? @rspec_puppet_coverage_pattern ||= File.join('**', 'lib', 'rspec-puppet', 'coverage.rb') source == 'rspec' && PDK::Util::Filesystem.fnmatch?(@rspec_puppet_coverage_pattern, PDK::Util::Filesystem.(file)) end |
#skipped? ⇒ Boolean
Checks if the event is the result of test that was not run. This includes pending tests (that are run but have an expected failure result).
86 87 88 |
# File 'lib/pdk/report/event.rb', line 86 def skipped? state == :skipped end |
#to_junit ⇒ REXML::Element
Renders the event as a JUnit XML testcase.
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/pdk/report/event.rb', line 139 def to_junit require 'rexml/document' testcase = REXML::Element.new('testcase') testcase.attributes['classname'] = [source, test].compact.join('.') testcase.attributes['name'] = [file, line, column].compact.join(':') testcase.attributes['time'] = 0 if failure? failure = REXML::Element.new('failure') failure.attributes['type'] = severity failure.attributes['message'] = failure.text = to_text testcase.elements << failure elsif skipped? testcase.add_element('skipped') end testcase end |
#to_text ⇒ String
Renders the event in a clang style text format.
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/pdk/report/event.rb', line 107 def to_text return if rspec_puppet_coverage? location = [file, line, column].compact.join(':') location = nil if location.empty? # TODO: maybe add trace if source == 'rspec' header = [severity, source, location, ].compact.join(': ') result = [header, " #{test}"] context = context_lines unless context.nil? result << ' Failure/Error:' result.concat(context) result << "\n" end result.compact.join("\n") else output = ['pdk'] output << "(#{severity.upcase}):" unless severity.nil? output << "#{source}:" unless source.nil? output << unless .nil? output << "(#{location})" unless location.nil? output.join(' ') end end |