class ZSpec::Formatter

Public Class Methods

new(queue:, tracker:, stdout:, message:) click to toggle source
Calls superclass method
# File lib/zspec/formatter.rb, line 5
def initialize(queue:, tracker:, stdout:, message:)
  super
  @output_hash                = { failures: [] }
  @failed                     = false
  @errors_outside_of_examples = false
  @message                    = message
  @queue                      = queue
  @tracker                    = tracker
  @stdout                     = stdout
end

Public Instance Methods

close(_notification) click to toggle source
# File lib/zspec/formatter.rb, line 31
def close(_notification)
  @queue.resolve(
    @failed,
    @message,
    @output_hash.to_json,
    @stdout.string
  )
  @tracker.track_runtime(@message, @duration)
  @tracker.track_failures(@output_hash[:failures]) if @failed
  @tracker.track_sequence(@message)
  raise if @errors_outside_of_examples
end
dump_summary(summary) click to toggle source
# File lib/zspec/formatter.rb, line 21
def dump_summary(summary)
  @duration = summary.duration
  # only set to true if there is a failure, otherwise it will override the failures from example_failed
  if summary.errors_outside_of_examples_count.to_i > 0
    @failed                     = true
    @errors_outside_of_examples = true
  end
  @output_hash[:summary] = format_summary(summary)
end
example_failed(failure) click to toggle source
# File lib/zspec/formatter.rb, line 16
def example_failed(failure)
  @failed = true
  @output_hash[:failures] << format_example(failure.example)
end

Private Instance Methods

format_example(example) click to toggle source
# File lib/zspec/formatter.rb, line 58
def format_example(example)
  hash = {
    id: example.id,
    description: example.description,
    full_description: example.full_description,
    status: example.execution_result.status.to_s,
    run_time: example.execution_result.run_time
  }
  e = example.exception
  if e
    hash[:exception] = {
      class: e.class.name,
      message: e.message,
      backtrace: e.backtrace
    }
  end
  hash
end
format_summary(summary) click to toggle source
# File lib/zspec/formatter.rb, line 46
def format_summary(summary)
  {
    duration: summary.duration,
    load_time: summary.load_time,
    file_path: @message,
    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
  }
end