Sha256: 7167a35064d1d2eb935d04363bf81032c473973798e9d571c0ba2db403633fb3

Contents?: true

Size: 1.58 KB

Versions: 1

Compression:

Stored size: 1.58 KB

Contents

module Specjour
  module Rspec
    class FinalReport
      require 'specjour/rspec/marshalable_rspec_failure'
      attr_reader :duration, :example_count, :failure_count, :pending_count, :pending_examples, :failing_examples

      def initialize
        @duration = 0.0
        @example_count = 0
        @failure_count = 0
        @pending_count = 0
        @pending_examples = []
        @failing_examples = []
      end

      def add(stats)
        stats.each do |key, value|
          if key == :duration
            @duration = value.to_f if duration < value.to_f
          else
            increment(key, value)
          end
        end
      end

      def increment(key, value)
        current = instance_variable_get("@#{key}")
        instance_variable_set("@#{key}", current + value)
      end

      def formatter_options
        @formatter_options ||= OpenStruct.new(
          :colour   => true,
          :autospec => false,
          :dry_run  => false
        )
      end

      def formatter
        @formatter ||= begin
          f = MarshalableFailureFormatter.new(formatter_options, $stdout)
          f.instance_variable_set(:@pending_examples, pending_examples)
          f
        end
      end

      def summarize
        if example_count > 0
          formatter.dump_pending
          dump_failures
          formatter.dump_summary(duration, example_count, failure_count, pending_count)
        end
      end

      def dump_failures
        failing_examples.each_with_index do |failure, index|
          formatter.dump_failure index + 1, failure
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
specjour-0.2.0 lib/specjour/rspec/final_report.rb