Class: Webspec::Formatter

Inherits:
RSpec::Core::Formatters::BaseFormatter
  • Object
show all
Defined in:
lib/webspec/formatter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(output) ⇒ Formatter

Returns a new instance of Formatter.



6
7
8
9
10
11
# File 'lib/webspec/formatter.rb', line 6

def initialize(output)
  super
  @run = Webspec.create_run
  @output_hash = {}
  @example_group = @run
end

Instance Attribute Details

#output_hashObject (readonly)

Returns the value of attribute output_hash.



4
5
6
# File 'lib/webspec/formatter.rb', line 4

def output_hash
  @output_hash
end

Instance Method Details

#closeObject



89
90
91
92
93
94
95
96
97
98
99
# File 'lib/webspec/formatter.rb', line 89

def close
  @output_hash[:env] = {
    :user => ENV['USER'],
    :ruby_platform => RUBY_PLATFORM,
    :ruby_engine => RUBY_ENGINE,
    :ruby_version => RUBY_VERSION,
    :ruby_patchlevel => RUBY_PATCHLEVEL
  }

  @run.update(@output_hash)
end

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



44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/webspec/formatter.rb', line 44

def dump_summary(duration, example_count, failure_count, pending_count)
  super(duration, example_count, failure_count, pending_count)
  @output_hash[:summary] = {
    :duration => duration,
    :example_count => example_count,
    :failure_count => failure_count,
    :pending_count => pending_count
  }
  @output_hash[:summary_line] = summary_line(example_count, failure_count, pending_count)

  # Don't print out profiled info if there are failures, it just clutters the output
  dump_profile if profile_examples? && failure_count == 0
end

#example_failed(example) ⇒ Object



31
32
33
# File 'lib/webspec/formatter.rb', line 31

def example_failed(example)
  example_finished(example)
end

#example_finished(example) ⇒ Object



39
40
41
42
# File 'lib/webspec/formatter.rb', line 39

def example_finished(example)
  puts "example_finished: example_group: #{@example_group}"
  @example_group.create_example((example))
end

#example_group_finished(example_group) ⇒ Object



23
24
25
# File 'lib/webspec/formatter.rb', line 23

def example_group_finished(example_group)
  @example_group = @example_group.parent
end

#example_group_started(example_group) ⇒ Object



17
18
19
20
21
# File 'lib/webspec/formatter.rb', line 17

def example_group_started(example_group)
  @example_group = @example_group.create_example_group({
    :description => example_group.description
  })
end

#example_metadata(example) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/webspec/formatter.rb', line 65

def (example)
  {
    :description => example.description,
    :full_description => example.full_description,
    :status => example.execution_result[:status],
    :example_group => example.example_group.description,
    :execution_result => example.execution_result,
    :file_path => example.file_path,
    :line_number  => example.[:line_number],
  }.tap do |hash|
    if e=example.exception
      hash[:exception] =  {
        :class => e.class.name,
        :message => e.message,
        :backtrace => e.backtrace,
      }
    end
  end
end

#example_passed(example) ⇒ Object



27
28
29
# File 'lib/webspec/formatter.rb', line 27

def example_passed(example)
  example_finished(example)
end

#example_pending(example) ⇒ Object



35
36
37
# File 'lib/webspec/formatter.rb', line 35

def example_pending(example)
  example_finished(example)
end

#message(message) ⇒ Object



13
14
15
# File 'lib/webspec/formatter.rb', line 13

def message(message)
  (@output_hash[:messages] ||= []) << message
end

#stopObject



85
86
87
# File 'lib/webspec/formatter.rb', line 85

def stop
  super
end

#summary_line(example_count, failure_count, pending_count) ⇒ Object



58
59
60
61
62
63
# File 'lib/webspec/formatter.rb', line 58

def summary_line(example_count, failure_count, pending_count)
  summary = pluralize(example_count, "example")
  summary << ", " << pluralize(failure_count, "failure")
  summary << ", #{pending_count} pending" if pending_count > 0
  summary
end