Module: TestBench::Output::Summary::Session

Defined in:
lib/test_bench/output/summary/session.rb

Class Method Summary collapse

Class Method Details

.call(file_count: nil, test_count: nil, pass_count: nil, skip_count: nil, failure_count: nil, error_count: nil, elapsed_time: nil, writer: nil) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/test_bench/output/summary/session.rb', line 5

def self.call(file_count: nil, test_count: nil, pass_count: nil, skip_count: nil, failure_count: nil, error_count: nil, elapsed_time: nil, writer: nil)
  file_count ||= 0
  test_count ||= 0
  pass_count ||= 0
  skip_count ||= 0
  failure_count ||= 0
  error_count ||= 0
  elapsed_time ||= 0
  writer ||= Writer.build

  failed = error_count > 0

  if elapsed_time.nonzero?
    tests_per_second = test_count / elapsed_time
  end

  if failed
    writer.escape_code(:red)
  end

  writer
    .text("Finished running #{numeric_label(file_count, 'file')}")
    .newline
    .text("Ran %s in %.3fs (%.1f tests/second)" % [
      numeric_label(test_count, 'test'),
      elapsed_time,
      tests_per_second || 0])
    .newline

  if pass_count.nonzero? && !failed
    writer
      .escape_code(:green)
      .text("#{pass_count} passed")
      .escape_code(:reset_fg)
  else
    writer.text("#{pass_count} passed")
  end

  writer.text(", ")

  if skip_count.nonzero? && !failed
    writer
      .escape_code(:yellow)
      .text("#{skip_count} skipped")
      .escape_code(:reset_fg)
  else
    writer.text("#{skip_count} skipped")
  end

  writer.text(", ")

  if failure_count.nonzero?
    writer
      .escape_code(:bold)
      .text("#{failure_count} failed")
      .escape_code(:reset_intensity)
  else
    writer.text("0 failed")
  end

  writer.text(", ")

  if failed
    writer
      .escape_code(:bold)
      .text(numeric_label(error_count, 'total error'))
      .escape_code(:reset_intensity)
      .escape_code(:reset_fg)
  else
    writer.text("0 total errors")
  end

  2.times do
    writer.newline
  end
end

.numeric_label(number, label, plural_text = nil) ⇒ Object



82
83
84
85
86
87
88
89
90
# File 'lib/test_bench/output/summary/session.rb', line 82

def self.numeric_label(number, label, plural_text=nil)
  plural_text ||= 's'

  if number == 1
    "#{number} #{label}"
  else
    "#{number} #{label}#{plural_text}"
  end
end