123456789_123456789_123456789_123456789_123456789_

Class: RSpec::Core::Formatters::JsonFormatter Private

Do not use. This class is for internal use only.
Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Instance Chain:
Inherits: RSpec::Core::Formatters::BaseFormatter
Defined in: rspec-core/lib/rspec/core/formatters/json_formatter.rb

Class Method Summary

BaseFormatter - Inherited

Instance Attribute Summary

BaseFormatter - Inherited

Instance Method Summary

Instance Attribute Details

#output_hash (readonly)

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/formatters/json_formatter.rb', line 11

attr_reader :output_hash

Instance Method Details

#close(_notification)

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/formatters/json_formatter.rb', line 56

def close(_notification)
  output.write @output_hash.to_json
end

#dump_profile(profile)

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/formatters/json_formatter.rb', line 60

def dump_profile(profile)
  @output_hash[:profile] = {}
  dump_profile_slowest_examples(profile)
  dump_profile_slowest_example_groups(profile)
end

#dump_profile_slowest_example_groups(profile)

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/formatters/json_formatter.rb', line 79

def dump_profile_slowest_example_groups(profile)
  @output_hash[:profile] ||= {}
  @output_hash[:profile][:groups] = profile.slowest_groups.map do |loc, hash|
    hash.update(:location => loc)
  end
end

#dump_profile_slowest_examples(profile)

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/formatters/json_formatter.rb', line 67

def dump_profile_slowest_examples(profile)
  @output_hash[:profile] = {}
  @output_hash[:profile][:examples] = profile.slowest_examples.map do |example|
    format_example(example).tap do |hash|
      hash[:run_time] = example.execution_result.run_time
    end
  end
  @output_hash[:profile][:slowest] = profile.slow_duration
  @output_hash[:profile][:total] = profile.duration
end

#dump_summary(summary)

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/formatters/json_formatter.rb', line 24

def dump_summary(summary)
  @output_hash[:summary] = {
    :duration => summary.duration,
    :example_count => summary.example_count,
    :failure_count => summary.failure_count,
    :pending_count => summary.pending_count,
    :errors_outside_of_examples_count => summary.errors_outside_of_examples_count
  }
  @output_hash[:summary_line] = summary.totals_line
end

#format_example(example) (private)

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/formatters/json_formatter.rb', line 88

def format_example(example)
  {
    :id => example.id,
    :description => example.description,
    :full_description => example.full_description,
    :status => example.execution_result.status.to_s,
    :file_path => example.[:file_path],
    :line_number  => example.[:line_number],
    :run_time => example.execution_result.run_time,
    :pending_message => example.execution_result.pending_message,
  }
end

#message(notification)

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/formatters/json_formatter.rb', line 20

def message(notification)
  (@output_hash[:messages] ||= []) << notification.message
end

#seed(notification)

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/formatters/json_formatter.rb', line 51

def seed(notification)
  return unless notification.seed_used?
  @output_hash[:seed] = notification.seed
end

#stop(group_notification)

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/formatters/json_formatter.rb', line 35

def stop(group_notification)
  @output_hash[:examples] = group_notification.notifications.map do |notification|
    format_example(notification.example).tap do |hash|
      e = notification.example.exception

      if e
        hash[:exception] = {
          :class => e.class.name,
          :message => e.message,
          :backtrace => notification.formatted_backtrace,
        }
      end
    end
  end
end