65 lines
1.6 KiB
Ruby
65 lines
1.6 KiB
Ruby
module Mutant
|
|
class Reporter
|
|
class CLI
|
|
class Printer
|
|
# Reporter for subject progress
|
|
class SubjectProgress < self
|
|
FORMAT = '(%02d/%02d) %3d%% - killtime: %0.02fs runtime: %0.02fs overhead: %0.02fs'.freeze
|
|
|
|
delegate(
|
|
:tests,
|
|
:subject,
|
|
:coverage,
|
|
:runtime,
|
|
:amount_mutations_killed,
|
|
:amount_mutations,
|
|
:amount_mutation_results,
|
|
:killtime,
|
|
:overhead
|
|
)
|
|
|
|
# Run printer
|
|
#
|
|
# @return [undefined]
|
|
def run
|
|
puts("#{subject.identification} mutations: #{amount_mutations}")
|
|
print_mutation_results
|
|
print_progress_bar_finish
|
|
print_stats
|
|
end
|
|
|
|
private
|
|
|
|
# Print stats
|
|
#
|
|
# @return [undefined]
|
|
def print_stats
|
|
status(
|
|
FORMAT,
|
|
amount_mutations_killed,
|
|
amount_mutations,
|
|
coverage * 100,
|
|
killtime,
|
|
runtime,
|
|
overhead
|
|
)
|
|
end
|
|
|
|
# Print progress bar finish
|
|
#
|
|
# @return [undefined]
|
|
def print_progress_bar_finish
|
|
puts(nil) unless amount_mutation_results.zero?
|
|
end
|
|
|
|
# Print mutation results
|
|
#
|
|
# @return [undefined]
|
|
def print_mutation_results
|
|
visit_collection(MutationProgressResult, object.mutation_results)
|
|
end
|
|
end # SubjectProgress
|
|
end # Printer
|
|
end # CLI
|
|
end # Reporter
|
|
end # Mutant
|