class Rspec::Core::Formatters::DocumentationFormatter
def add_example_group(example_group)
def add_example_group(example_group) super described_example_group_chain.each_with_index do |nested_example_group, i| unless nested_example_group == @previous_nested_example_groups[i] at_root_level = (i == 0) desc_or_name = at_root_level ? nested_example_group.name : nested_example_group.description output.puts if at_root_level output.puts "#{' ' * i}#{desc_or_name}" end end @previous_nested_example_groups = described_example_group_chain end
def current_indentation
def current_indentation ' ' * @previous_nested_example_groups.size end
def described_example_group_chain
def described_example_group_chain example_group.ancestors end
def example_finished(example)
def example_finished(example) super output.puts output_for(example) output.flush end
def failure_output(example, exception)
def failure_output(example, exception) expectation_not_met = exception.is_a?(::Rspec::Expectations::ExpectationNotMetError) message = if expectation_not_met "#{current_indentation}#{example.description} (FAILED)" else "#{current_indentation}#{example.description} (ERROR)" end expectation_not_met ? red(message) : magenta(message) end
def initialize
def initialize super @previous_nested_example_groups = [] end
def output_for(example)
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 passed_output(example)
def passed_output(example) green("#{current_indentation}#{example.description}") end
def pending_output(example, message)
def pending_output(example, message) yellow("#{current_indentation}#{example.description} (PENDING: #{message})") end