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)