Sha256: 174759e5ecb9a0ef1f3d6922a5c7a770891c05d2085066d56e85b765d3d4753b

Contents?: true

Size: 1.99 KB

Versions: 3

Compression:

Stored size: 1.99 KB

Contents

require 'pathname'
require 'uuid'
require 'rspec/core/formatters/base_formatter'

module AllureRSpec

  class Formatter < RSpec::Core::Formatters::BaseFormatter

    def example_failed(example)
      AllureRSpec::Builder.stop_test(
          example.metadata[:example_group][:description_args].first,
          example.metadata[:description],
          example.metadata[:execution_result].merge(:caller => example.metadata[:caller])
      )
      super
    end

    def example_group_finished(group)
      AllureRSpec::Builder.stop_suite(group.metadata[:example_group][:description_args].first)
      super
    end

    def example_group_started(group)
      AllureRSpec::Builder.start_suite(group.metadata[:example_group][:description_args].first)
      super
    end

    def example_passed(example)
      AllureRSpec::Builder.stop_test(
          example.metadata[:example_group][:description_args].first,
          example.metadata[:description],
          example.metadata[:execution_result].merge(:caller => example.metadata[:caller])
      )
      super
    end

    def example_pending(example)
      super
    end

    def example_started(example)
      suite = example.metadata[:example_group][:description_args].first
      test = example.metadata[:description]
      AllureRSpec::Builder.start_test(suite, test)
      super
    end

    def start(example_count)
      dir = Pathname.new(AllureRSpec::Config.output_dir)
      FileUtils.rm_rf(dir)
    end

    def stop
      AllureRSpec::Builder.each_suite_build do |suite, xml|
        dir = Pathname.new(AllureRSpec::Config.output_dir)
        FileUtils.mkdir_p(dir)
        out_file = dir.join("#{UUID.new.generate}-testsuite.xml")
        File.open(out_file, 'w+') do |file|
          file.write(xml)
        end

        #xsd = Nokogiri::XML::Schema(File.read("allure-model.xsd"))
        #doc = Nokogiri::XML(File.read(out_file))
        #
        #xsd.validate(doc).each do |error|
        #  puts error.message
        #end
      end
      super
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
allure-rspec-0.3.3 lib/allure-rspec/formatter.rb
allure-rspec-0.3.2 lib/allure-rspec/formatter.rb
allure-rspec-0.3.1 lib/allure-rspec/formatter.rb