Class: Iterm2TabFormatter

Inherits:
RSpec::Core::Formatters::BaseFormatter
  • Object
show all
Defined in:
lib/iterm2_tab_formatter.rb,
lib/iterm2_tab_formatter/base.rb,
lib/iterm2_tab_formatter/version.rb,
lib/iterm2_tab_formatter/controller.rb,
lib/iterm2_tab_formatter/color_parse.rb,
lib/iterm2_tab_formatter/text_formatter.rb

Defined Under Namespace

Classes: Controller, TextFormatter

Constant Summary collapse

VERSION =
"0.8.0"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(output) ⇒ Iterm2TabFormatter

Returns a new instance of Iterm2TabFormatter.



11
12
13
14
15
16
17
18
19
# File 'lib/iterm2_tab_formatter.rb', line 11

def initialize(output)
  super
  colors = {
    suite_start: color(:it2tf_neutral),
    spec_fail: color(:it2tf_fail),
    suite_pass: color(:it2tf_pass)
  }
  @controller = Iterm2TabFormatter::Controller.new(colors)
end

Instance Attribute Details

#controllerObject (readonly)

Returns the value of attribute controller.



9
10
11
# File 'lib/iterm2_tab_formatter.rb', line 9

def controller
  @controller
end

Class Method Details

.color_parse(code) ⇒ Object

Raises:

  • (ArgumentError)


5
6
7
8
9
10
11
12
# File 'lib/iterm2_tab_formatter/color_parse.rb', line 5

def color_parse(code)
  regex = /\A#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})\z/i
  raise ArgumentError, "Invalid format: #{code}. Use #RRGGBB" unless code.match(regex)

  code.scan(regex) do |red, green, blue|
    return [red.to_i(16), green.to_i(16), blue.to_i(16)]
  end
end

Instance Method Details

#dump_summary(duration, example_count, failure_count, pending_count) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/iterm2_tab_formatter.rb', line 38

def dump_summary(duration, example_count, failure_count, pending_count)
  controller.apply_pass_color if failure_count == 0 && example_count > 0

  pass_ratio = 1 - (1.0 * failure_count / example_count)
  controller.tab_title = "#{pass_ratio * 100}% passed"

  formatter = Iterm2TabFormatter::TextFormatter.new(
    duration_seconds: duration,
    example_count: example_count,
    failure_count: failure_count,
    pending_count: pending_count,
    finish_time: Time.now
  )

  window_title = formatter.status
  window_title << ' - '
  window_title << formatter.window_title
  window_title << ' - '
  window_title << formatter.duration
  window_title << ' - Finished at '
  window_title << formatter.finished_at
  controller.window_title = window_title
end

#example_failed(example) ⇒ Object



26
27
28
29
# File 'lib/iterm2_tab_formatter.rb', line 26

def example_failed(example)
  super
  controller.apply_fail_color
end

#example_started(example) ⇒ Object



31
32
33
34
35
36
# File 'lib/iterm2_tab_formatter.rb', line 31

def example_started(example)
  super

  controller.window_title = example.description
  controller.tab_title = "#{examples.size - 1}/#{example_count}"
end

#start(example_count) ⇒ Object



21
22
23
24
# File 'lib/iterm2_tab_formatter.rb', line 21

def start(example_count)
  super
  controller.apply_start_color
end