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