lib/cucumber/formatter/junit.rb in cucumber-3.1.0 vs lib/cucumber/formatter/junit.rb in cucumber-3.1.1

- old
+ new

@@ -1,17 +1,17 @@ # frozen_string_literal: true + require 'builder' require 'cucumber/formatter/backtrace_filter' require 'cucumber/formatter/io' require 'cucumber/formatter/interceptor' require 'fileutils' module Cucumber module Formatter # The formatter used for <tt>--format junit</tt> class Junit - include Io class UnNamedFeatureError < StandardError def initialize(feature_file) super("The feature in '#{feature_file}' does not have a name. The JUnit XML format requires a name for the testsuite element.") @@ -23,19 +23,21 @@ config.on_event :test_case_finished, &method(:on_test_case_finished) config.on_event :test_step_finished, &method(:on_test_step_finished) config.on_event :test_run_finished, &method(:on_test_run_finished) @reportdir = ensure_dir(config.out_stream, 'junit') @config = config - @features_data = Hash.new { |h,k| h[k] = { - feature: nil, - failures: 0, - errors: 0, - tests: 0, - skipped: 0, - time: 0, - builder: Builder::XmlMarkup.new(:indent => 2) - }} + @features_data = Hash.new do |h, k| + h[k] = { + feature: nil, + failures: 0, + errors: 0, + tests: 0, + skipped: 0, + time: 0, + builder: Builder::XmlMarkup.new(:indent => 2) + } + end end def on_test_case_started(event) test_case = event.test_case unless same_feature_as_previous_test_case?(test_case.feature) @@ -91,11 +93,12 @@ :failures => feature_data[:failures], :errors => feature_data[:errors], :skipped => feature_data[:skipped], :tests => feature_data[:tests], :time => format('%.6f', feature_data[:time]), - :name => feature_data[:feature].name ) do + :name => feature_data[:feature].name + ) do @testsuite << feature_data[:builder].target! end write_file(feature_result_filename(feature_data[:feature].file), @testsuite.target!) end @@ -138,14 +141,14 @@ @current_feature_data[:builder].cdata!(format_exception(exception)) if exception end @current_feature_data[:failures] += 1 end @current_feature_data[:builder].tag!('system-out') do - @current_feature_data[:builder].cdata! strip_control_chars(@interceptedout.buffer.join) + @current_feature_data[:builder].cdata! strip_control_chars(@interceptedout.buffer_string) end @current_feature_data[:builder].tag!('system-err') do - @current_feature_data[:builder].cdata! strip_control_chars(@interceptederr.buffer.join) + @current_feature_data[:builder].cdata! strip_control_chars(@interceptederr.buffer_string) end end @current_feature_data[:tests] += 1 end @@ -177,11 +180,10 @@ # strip control chars from cdata, to make it safe for external parsers def strip_control_chars(cdata) cdata.scan(/[[:print:]\t\n\r]/).join end - end class NameBuilder attr_reader :scenario_name, :name_suffix, :row_name @@ -237,8 +239,7 @@ def duration(duration, *) duration.tap { |duration| @test_case_duration = duration.nanoseconds / 10**9.0 } end end - end end