Class: RuboCop::Formatter::JUnitFormatter Private
- Inherits:
-
BaseFormatter
- Object
- BaseFormatter
- RuboCop::Formatter::JUnitFormatter
- Defined in:
- lib/rubocop/formatter/junit_formatter.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
This formatter formats the report data in JUnit format.
Instance Attribute Summary
Attributes inherited from BaseFormatter
Instance Method Summary collapse
- #add_testcase_element_to_testsuite_element(file, target_offenses, cop) ⇒ Object private
- #classname_attribute_value(file) ⇒ Object private
- #file_finished(file, offenses) ⇒ Object private
- #finished(_inspected_files) ⇒ Object private
-
#initialize(output, options = {}) ⇒ JUnitFormatter
constructor
private
A new instance of JUnitFormatter.
- #offenses_for_cop(all_offenses, cop) ⇒ Object private
- #relevant_for_output?(options, target_offenses) ⇒ Boolean private
Methods inherited from BaseFormatter
Constructor Details
#initialize(output, options = {}) ⇒ JUnitFormatter
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of JUnitFormatter.
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/rubocop/formatter/junit_formatter.rb', line 18 def initialize(output, = {}) super @document = REXML::Document.new.tap { |document| document << REXML::XMLDecl.new } testsuites = REXML::Element.new('testsuites', @document) testsuite = REXML::Element.new('testsuite', testsuites) @testsuite = testsuite.tap { |element| element.add_attributes('name' => 'rubocop') } reset_count end |
Instance Method Details
#add_testcase_element_to_testsuite_element(file, target_offenses, cop) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
55 56 57 58 59 60 61 62 |
# File 'lib/rubocop/formatter/junit_formatter.rb', line 55 def add_testcase_element_to_testsuite_element(file, target_offenses, cop) REXML::Element.new('testcase', @testsuite).tap do |testcase| testcase.attributes['classname'] = classname_attribute_value(file) testcase.attributes['name'] = cop.cop_name add_failure_to(testcase, target_offenses, cop.cop_name) end end |
#classname_attribute_value(file) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
64 65 66 |
# File 'lib/rubocop/formatter/junit_formatter.rb', line 64 def classname_attribute_value(file) file.gsub(/\.rb\Z/, '').gsub("#{Dir.pwd}/", '').tr('/', '.') end |
#file_finished(file, offenses) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/rubocop/formatter/junit_formatter.rb', line 29 def file_finished(file, offenses) @inspected_file_count += 1 # TODO: Returns all cops with the same behavior as # the original rubocop-junit-formatter. # https://github.com/mikian/rubocop-junit-formatter/blob/v0.1.4/lib/rubocop/formatter/junit_formatter.rb#L9 # # In the future, it would be preferable to return only enabled cops. Cop::Registry.all.each do |cop| target_offenses = offenses_for_cop(offenses, cop) @offense_count += target_offenses.count next unless relevant_for_output?(, target_offenses) add_testcase_element_to_testsuite_element(file, target_offenses, cop) end end |
#finished(_inspected_files) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
68 69 70 71 |
# File 'lib/rubocop/formatter/junit_formatter.rb', line 68 def finished(_inspected_files) @testsuite.add_attributes('tests' => @inspected_file_count, 'failures' => @offense_count) @document.write(output, 2) end |
#offenses_for_cop(all_offenses, cop) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
51 52 53 |
# File 'lib/rubocop/formatter/junit_formatter.rb', line 51 def offenses_for_cop(all_offenses, cop) all_offenses.select { |offense| offense.cop_name == cop.cop_name } end |
#relevant_for_output?(options, target_offenses) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
47 48 49 |
# File 'lib/rubocop/formatter/junit_formatter.rb', line 47 def relevant_for_output?(, target_offenses) ![:display_only_failed] || target_offenses.any? end |