free_mutant/lib/mutant/reporter/cli.rb

100 lines
1.8 KiB
Ruby
Raw Normal View History

module Mutant
class Reporter
# Reporter that reports in human readable format
class CLI < self
include Concord.new(:output, :format)
# Build reporter
#
# @param [IO] output
#
# @return [Reporter::CLI]
#
# @api private
def self.build(output)
tput = Tput.detect
tty = output.respond_to?(:tty?) && output.tty?
format = if !Mutant.ci? && tty && tput
Format::Framed.new(tty: tty, tput: tput)
2014-12-22 01:28:30 +00:00
else
Format::Progressive.new(tty: tty)
end
new(output, format)
end
2014-07-17 13:59:25 +00:00
# Report start
2014-07-17 13:59:25 +00:00
#
# @param [Env] env
2014-07-17 13:59:25 +00:00
#
2014-12-01 18:33:47 +00:00
# @return [self]
#
2014-07-17 13:59:25 +00:00
# @api private
def start(env)
write(format.start(env))
self
2014-07-17 13:59:25 +00:00
end
# Report progress object
#
2014-12-09 00:10:31 +00:00
# @param [Parallel::Status] status
#
# @return [self]
#
# @api private
2014-12-09 00:10:31 +00:00
def progress(status)
write(format.progress(status))
self
end
# Report delay in seconds
2014-12-08 18:13:49 +00:00
#
# TODO: Move this to a callback registration
#
# @return [Float]
#
# @api private
def delay
format.delay
end
# Report warning
#
# @param [String] message
#
# @return [self]
#
# @api private
def warn(message)
output.puts(message)
self
end
2014-07-17 13:59:25 +00:00
# Report env
#
2014-07-17 13:59:25 +00:00
# @param [Result::Env] env
#
# @return [self]
#
# @api private
2014-07-17 13:59:25 +00:00
def report(env)
2015-05-03 00:21:30 +00:00
Printer::EnvResult.call(output, env)
self
end
2014-07-17 13:59:25 +00:00
private
# Write output frame
2014-07-17 13:59:25 +00:00
#
# @param [String] frame
#
# @return [undefined]
#
# @api private
def write(frame)
2014-07-17 13:59:25 +00:00
output.write(frame)
end
2013-06-14 20:54:02 +02:00
end # CLI
end # Reporter
end # Mutant