lib/cucumber/formatter/junit.rb in cucumber-1.3.20 vs lib/cucumber/formatter/junit.rb in cucumber-2.0.0.beta.1

- old
+ new

@@ -1,14 +1,19 @@ -require 'cucumber/formatter/ordered_xml_markup' +require 'builder' require 'cucumber/formatter/io' require 'cucumber/formatter/interceptor' require 'fileutils' module Cucumber module Formatter # The formatter used for <tt>--format junit</tt> class Junit + + # TODO: remove coupling to types + AST_SCENARIO_OUTLINE = Cucumber::Core::Ast::ScenarioOutline + AST_EXAMPLE_ROW = Reports::LegacyExampleTableRow + 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.") @@ -21,25 +26,25 @@ end def before_feature(feature) @current_feature = feature @failures = @errors = @tests = @skipped = 0 - @builder = OrderedXmlMarkup.new( :indent => 2 ) + @builder = Builder::XmlMarkup.new( :indent => 2 ) @time = 0 # In order to fill out <system-err/> and <system-out/>, we need to # intercept the $stderr and $stdout @interceptedout = Interceptor::Pipe.wrap(:stdout) @interceptederr = Interceptor::Pipe.wrap(:stderr) end def before_feature_element(feature_element) - @in_examples = Ast::ScenarioOutline === feature_element + @in_examples = AST_SCENARIO_OUTLINE === feature_element @steps_start = Time.now end def after_feature(feature) - @testsuite = OrderedXmlMarkup.new( :indent => 2 ) + @testsuite = Builder::XmlMarkup.new( :indent => 2 ) @testsuite.instruct! @testsuite.testsuite( :failures => @failures, :errors => @errors, :skipped => @skipped, @@ -108,11 +113,11 @@ @table_start = Time.now end def after_table_row(table_row) - return unless @in_examples and Cucumber::Ast::OutlineTable::ExampleRow === table_row + return unless @in_examples and AST_EXAMPLE_ROW === table_row duration = Time.now - @table_start unless @header_row name_suffix = " (outline example : #{table_row.name})" if table_row.failed? @output += "Example row: #{table_row.name}\n" @@ -160,11 +165,9 @@ def basename(feature_file) File.basename(feature_file.gsub(/[\\\/]/, '-'), '.feature') end def write_file(feature_filename, data) - return unless @tests > 0 - File.open(feature_filename, 'w') { |file| file.write(data) } end # strip control chars from cdata, to make it safe for external parsers def strip_control_chars(cdata)