class Doctrine::Reporter

public

Public Class Methods

new(output: $stdout, tty: $stdout.tty?) click to toggle source
# File lib/doctrine/reporter.rb, line 9
def initialize(output: $stdout, tty: $stdout.tty?)
  @output = output
  @tty = tty
  @started = current_time
  @pastel = Pastel.new
end

Public Instance Methods

finished(tenet) click to toggle source
# File lib/doctrine/reporter.rb, line 19
def finished(tenet)
end
starting(tenet) click to toggle source
# File lib/doctrine/reporter.rb, line 16
def starting(tenet)
end
summarize(tenets) click to toggle source
# File lib/doctrine/reporter.rb, line 22
def summarize(tenets)
  elapsed_ms = ((current_time - @started) * 1_000)

  if elapsed_ms > 1_000
    elapsed = elapsed_ms / 1_000
    elapsed_units = "s"
  else
    elapsed = elapsed_ms
    elapsed_units = "ms"
  end

  tenet_text = if tenets.count == 1
    "tenet"
  else
    "tenets"
  end

  failures = []
  tenets.each do |tenet|
    if tenet.errored?
      failures << tenet
      @output << decorate("x", color: :red)
    else
      @output << decorate(".", color: :green)
    end
  end

  summary_text = "Tested #{tenets.count} #{tenet_text} in #{elapsed.round(2)}#{elapsed_units}"

  if failures.any?
    failure_text = if failures.count == 1
      "failure"
    else
      "failures"
    end

    failures.each do |failure|
      @output << "\n"
      @output << "\n"
      @output << decorate(failure.error.to_s, color: :red)
      failure.error.backtrace.each do |line|
        @output << "\n"
        @output << decorate(line, color: :red)
      end
    end

    @output << "\n"
    @output << "\n"
    @output << summary_text
    @output << decorate(" (#{failures.count} #{failure_text})", color: :red)
  else
    @output << "\n"
    @output << "\n"
    @output << summary_text
    @output << decorate(" (good to go)", color: :green)
  end

  @output << "\n"
end

Private Instance Methods

current_time() click to toggle source
# File lib/doctrine/reporter.rb, line 90
        def current_time
  Process.clock_gettime(Process::CLOCK_MONOTONIC)
end
decorate(text, color:) click to toggle source
# File lib/doctrine/reporter.rb, line 82
        def decorate(text, color:)
  if @tty
    @pastel.public_send(color, text)
  else
    text
  end
end