Class: ActiveMutator::Reporter::Terminal
- Inherits:
-
Object
- Object
- ActiveMutator::Reporter::Terminal
- Defined in:
- lib/active_mutator/reporter/terminal.rb
Constant Summary collapse
- CHARS =
{ killed: ".", survived: "S", timeout: "T", error: "E", uncovered: "U", accepted: "A", skipped: "-" }.freeze
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(out: $stdout) ⇒ Terminal
constructor
A new instance of Terminal.
- #on_result(result) ⇒ Object
- #summary(results, invalid_count:) ⇒ Object
Constructor Details
#initialize(out: $stdout) ⇒ Terminal
Returns a new instance of Terminal.
7 8 9 |
# File 'lib/active_mutator/reporter/terminal.rb', line 7 def initialize(out: $stdout) @out = out end |
Class Method Details
.score(counts) ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/active_mutator/reporter/terminal.rb', line 32 def self.score(counts) detected = counts.fetch(:killed, 0) + counts.fetch(:timeout, 0) denominator = detected + counts.fetch(:survived, 0) return 1.0 if denominator.zero? detected.to_f / denominator end |
Instance Method Details
#on_result(result) ⇒ Object
11 12 13 |
# File 'lib/active_mutator/reporter/terminal.rb', line 11 def on_result(result) @out.print(CHARS.fetch(result.status)) end |
#summary(results, invalid_count:) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/active_mutator/reporter/terminal.rb', line 15 def summary(results, invalid_count:) counts = results.group_by(&:status).transform_values(&:size) @out.puts "", "" CHARS.each_key do |status| @out.puts "#{status}: #{counts.fetch(status, 0)}" end @out.puts "invalid (discarded): #{invalid_count}" @out.puts format("Mutation score: %.1f%%", score(counts) * 100) survivors = results.select { |r| r.status == :survived } print_survivors(survivors) unless survivors.empty? skipped = results.select { |r| r.status == :skipped } print_skipped(skipped) unless skipped.empty? stats = OperatorStats.call(results) noisy = stats.select { |_, s| s["survived"].positive? } print_operator_stats(noisy) unless noisy.empty? end |