Sha256: f0af11e7527c72ad2e4e5829457707b150df194fa1f2562e42bd228bd726135b

Contents?: true

Size: 1.94 KB

Versions: 5

Compression:

Stored size: 1.94 KB

Contents

module RSpec

  module Core

    module Formatters

      class DocumentationFormatter < BaseTextFormatter

        def initialize(output)
          super(output)
          @previous_nested_example_groups = []
        end

        def add_example_group(example_group)
          super

          example_group_chain.each_with_index do |nested_example_group, i|
            unless nested_example_group == @previous_nested_example_groups[i]
              output.puts if i == 0
              output.puts "#{'  ' * i}#{nested_example_group.description}"
            end
          end

          @previous_nested_example_groups = example_group_chain
        end
        
        def output_for(example)
          case example.execution_result[:status]
          when 'failed'
            failure_output(example, example.execution_result[:exception_encountered])
          when 'pending'
            pending_output(example, example.execution_result[:pending_message])
          when 'passed'
            passed_output(example)
          else
            red(example.execution_result[:status])
          end
        end

        def example_finished(example)
          super
          output.puts output_for(example)
          output.flush
        end

        def failure_output(example, exception)
          red("#{current_indentation}#{example.description} (FAILED - #{next_failure_index})")
        end

        def next_failure_index
          @next_failure_index ||= 0
          @next_failure_index += 1
        end

        def passed_output(example)
          green("#{current_indentation}#{example.description}")
        end

        def pending_output(example, message)
          yellow("#{current_indentation}#{example.description} (PENDING: #{message})")
        end

        def current_indentation
          '  ' * @previous_nested_example_groups.size
        end

        def example_group_chain
          example_group.ancestors.reverse
        end

      end

    end

  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rspec-core-2.0.0.beta.14 lib/rspec/core/formatters/documentation_formatter.rb
rspec-core-2.0.0.beta.13 lib/rspec/core/formatters/documentation_formatter.rb
rspec-core-2.0.0.beta.12 lib/rspec/core/formatters/documentation_formatter.rb
rspec-core-2.0.0.beta.11 lib/rspec/core/formatters/documentation_formatter.rb
rspec-core-2.0.0.beta.10 lib/rspec/core/formatters/documentation_formatter.rb