class TestBench::Output::Summary

Attributes

current_file[RW]
elapsed_time[W]
error_count[W]
errors_by_file[W]
failure_count[W]
file_count[W]
pass_count[W]
skip_count[W]
test_count[W]
timer[W]

Public Class Methods

build(writer: nil, device: nil, styling: nil) click to toggle source
# File lib/test_bench/output/summary.rb, line 62
def self.build(writer: nil, device: nil, styling: nil)
  instance = new
  instance.configure(writer: writer, device: device, styling: styling)
  instance
end

Public Instance Methods

configure(writer: nil, device: nil, styling: nil) click to toggle source
# File lib/test_bench/output/summary.rb, line 57
def configure(writer: nil, device: nil, styling: nil)
  Writer.configure(self, writer: writer, device: device, styling: styling)
  Timer.configure(self)
end
elapsed_time() click to toggle source
# File lib/test_bench/output/summary.rb, line 38
def elapsed_time
  @elapsed_time ||= 0
end
enter_file(file) click to toggle source
# File lib/test_bench/output/summary.rb, line 68
def enter_file(file)
  timer.start

  self.current_file = file
end
error(error) click to toggle source
# File lib/test_bench/output/summary.rb, line 96
def error(error)
  errors_by_file[current_file] << error

  self.error_count += 1
end
error_count() click to toggle source
# File lib/test_bench/output/summary.rb, line 33
def error_count
  @error_count ||= 0
end
error_summary() click to toggle source
# File lib/test_bench/output/summary.rb, line 112
def error_summary
  return if errors_by_file.empty?

  writer
    .escape_code(:bold)
    .escape_code(:red)
    .text('Error Summary:')
    .escape_code(:reset_intensity)
    .escape_code(:reset_fg)
    .newline

  errors_by_file.each do |file, errors|
    error_count = errors.count

    writer
      .text(error_count.to_s.rjust(4, ' '))
      .text(": #{file}")
      .newline

    errors.each do |error|
      writer
        .text('      ')
        .escape_code(:red)

      PrintError.error_message(error, writer: writer)

      writer.escape_code(:reset_fg)
    end
  end

  writer.newline
end
errors_by_file() click to toggle source
# File lib/test_bench/output/summary.rb, line 48
def errors_by_file
  @errors_by_file ||= Hash.new do |hash, key|
    hash[key] = []
  end
end
exit_file(_, _) click to toggle source
# File lib/test_bench/output/summary.rb, line 74
def exit_file(_, _)
  elapsed_time = timer.stop

  self.elapsed_time += elapsed_time

  self.file_count += 1
end
failure_count() click to toggle source
# File lib/test_bench/output/summary.rb, line 28
def failure_count
  @failure_count ||= 0
end
file_count() click to toggle source
# File lib/test_bench/output/summary.rb, line 8
def file_count
  @file_count ||= 0
end
finish(_) click to toggle source
# File lib/test_bench/output/summary.rb, line 102
def finish(_)
  error_summary

  session_summary
end
finish_test(_, result) click to toggle source
# File lib/test_bench/output/summary.rb, line 82
def finish_test(_, result)
  self.test_count += 1

  if result
    self.pass_count += 1
  else
    self.failure_count += 1
  end
end
pass_count() click to toggle source
# File lib/test_bench/output/summary.rb, line 18
def pass_count
  @pass_count ||= 0
end
session_summary() click to toggle source
# File lib/test_bench/output/summary.rb, line 108
def session_summary
  Session.(file_count: file_count, test_count: test_count, pass_count: pass_count, skip_count: skip_count, failure_count: failure_count, error_count: error_count, elapsed_time: elapsed_time, writer: writer)
end
skip_count() click to toggle source
# File lib/test_bench/output/summary.rb, line 23
def skip_count
  @skip_count ||= 0
end
skip_test(_) click to toggle source
# File lib/test_bench/output/summary.rb, line 92
def skip_test(_)
  self.skip_count += 1
end
test_count() click to toggle source
# File lib/test_bench/output/summary.rb, line 13
def test_count
  @test_count ||= 0
end
timer() click to toggle source
# File lib/test_bench/output/summary.rb, line 43
def timer
  @timer ||= Timer::Substitute.build
end