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