Class: Peck::Notifiers::Default

Inherits:
Base show all
Defined in:
lib/peck/notifiers/default.rb

Constant Summary

Constants included from Base::BacktraceCleaning

Base::BacktraceCleaning::ANONYMOUS_BLOCK_RE, Base::BacktraceCleaning::PECK_PATH

Instance Method Summary collapse

Methods inherited from Base

use

Methods included from Base::BacktraceCleaning

#clean_backtrace

Constructor Details

#initializeDefault

Returns a new instance of Default.



8
9
10
# File 'lib/peck/notifiers/default.rb', line 8

def initialize
  @started_at = @finished_at = Time.now
end

Instance Method Details

#finishedObject



16
17
18
# File 'lib/peck/notifiers/default.rb', line 16

def finished
  @finished_at = Time.now
end

#finished_specification(spec) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/peck/notifiers/default.rb', line 20

def finished_specification(spec)
  if spec.passed?
    $stdout.write('.')
  elsif spec.failed?
    $stdout.write('f')
  end
end

#install_at_exitObject



65
66
67
# File 'lib/peck/notifiers/default.rb', line 65

def install_at_exit
  at_exit { write }
end

#runtime_in_secondsObject



50
51
52
53
# File 'lib/peck/notifiers/default.rb', line 50

def runtime_in_seconds
  runtime = @finished_at - @started_at
  (runtime * 100).round / 100.0
end

#startedObject



12
13
14
# File 'lib/peck/notifiers/default.rb', line 12

def started
  @started_at = Time.now
end

#writeObject



59
60
61
62
63
# File 'lib/peck/notifiers/default.rb', line 59

def write
  puts if Peck.counter.ran > 0
  write_events
  write_stats
end

#write_event(number, event) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/peck/notifiers/default.rb', line 34

def write_event(number, event)
  case event.exception
  when Exception
    write_exeception(number, event)
  else
    raise ArgumentError, "Don't know how to display event `#{event.expectation.class.name}'"
  end
end

#write_eventsObject



43
44
45
46
47
48
# File 'lib/peck/notifiers/default.rb', line 43

def write_events
  Peck.all_events.each_with_index do |event, index|
    number = index + 1
    write_event(number, event)
  end
end

#write_exeception(number, event) ⇒ Object



28
29
30
31
32
# File 'lib/peck/notifiers/default.rb', line 28

def write_exeception(number, event)
  puts "  #{number}) #{event.spec.label}\n\n"
  backtrace = clean_backtrace(event.exception.backtrace)
  puts "  #{event.exception.message}\n\n\t#{backtrace.join("\n\t")}\n\n"
end

#write_statsObject



55
56
57
# File 'lib/peck/notifiers/default.rb', line 55

def write_stats
  puts "#{Peck.counter.ran} #{pluralize(Peck.counter.ran, 'spec')}, #{Peck.counter.failed} #{pluralize(Peck.counter.failed, 'failure')}, finished in #{runtime_in_seconds} seconds."
end