Class: Peck::Notifiers::Default

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

Direct Known Subclasses

Documentation

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

#backtrace(event) ⇒ Object



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

def backtrace(event)
  if Peck.clean_backtrace == false
    backtrace = event.exception.backtrace
  else
    backtrace = clean_backtrace(event.exception.backtrace)
  end
end

#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



81
82
83
# File 'lib/peck/notifiers/default.rb', line 81

def install_at_exit
  at_exit { write }
end

#runtime_in_secondsObject



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

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



75
76
77
78
79
# File 'lib/peck/notifiers/default.rb', line 75

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

#write_event(number, event) ⇒ Object



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

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

#write_eventsObject



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

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

#write_exception(number, event) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/peck/notifiers/default.rb', line 36

def write_exception(number, event)
  puts "  #{number}) #{event.spec.label}\n\n"

  backtrace = backtrace(event)

  parts = []
  unless event.exception.message.nil? || event.exception.message == ''
    parts << "  #{event.exception.message}"
  end
  parts << "\t#{backtrace.join("\n\t")}"
  parts << nil
  puts parts.join("\n\n")
end

#write_statsObject



71
72
73
# File 'lib/peck/notifiers/default.rb', line 71

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