Class: CI::Reporter::RSpec

Inherits:
RSpecFormatters::BaseFormatter
  • Object
show all
Defined in:
lib/ci/reporter/rspec.rb

Overview

Custom RSpec formatter used to hook into the spec runs and capture results.

Direct Known Subclasses

RSpecBase, RSpecDoc

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ RSpec

Returns a new instance of RSpec.



92
93
94
95
96
97
# File 'lib/ci/reporter/rspec.rb', line 92

def initialize(*args)
  super
  @formatter ||= RSpecFormatters::ProgressFormatter.new(*args)
  @report_manager = ReportManager.new("spec")
  @suite = nil
end

Instance Attribute Details

#formatterObject

Returns the value of attribute formatter.



91
92
93
# File 'lib/ci/reporter/rspec.rb', line 91

def formatter
  @formatter
end

#report_managerObject

Returns the value of attribute report_manager.



90
91
92
# File 'lib/ci/reporter/rspec.rb', line 90

def report_manager
  @report_manager
end

Instance Method Details

#add_behaviour(name) ⇒ Object

rspec 0.9



104
105
106
107
# File 'lib/ci/reporter/rspec.rb', line 104

def add_behaviour(name)
  @formatter.add_behaviour(name)
  new_suite(name)
end

#add_example_group(example_group) ⇒ Object

Compatibility with rspec < 1.2.4



110
111
112
113
# File 'lib/ci/reporter/rspec.rb', line 110

def add_example_group(example_group)
  @formatter.add_example_group(example_group)
  new_suite(description_for(example_group))
end

#closeObject



188
189
190
# File 'lib/ci/reporter/rspec.rb', line 188

def close
  @formatter.close
end

#dump_failure(*args) ⇒ Object



174
175
176
# File 'lib/ci/reporter/rspec.rb', line 174

def dump_failure(*args)
  @formatter.dump_failure(*args)
end

#dump_failures(*args) ⇒ Object



170
171
172
# File 'lib/ci/reporter/rspec.rb', line 170

def dump_failures(*args)
  @formatter.dump_failures(*args)
end

#dump_pendingObject



184
185
186
# File 'lib/ci/reporter/rspec.rb', line 184

def dump_pending
  @formatter.dump_pending
end

#dump_summary(*args) ⇒ Object



178
179
180
181
182
# File 'lib/ci/reporter/rspec.rb', line 178

def dump_summary(*args)
  @formatter.dump_summary(*args)
  write_report
  @formatter.dump_failures
end

#example_failed(name_or_example, *rest) ⇒ Object



132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# File 'lib/ci/reporter/rspec.rb', line 132

def example_failed(name_or_example, *rest)
  @formatter.example_failed(name_or_example, *rest)

  # In case we fail in before(:all)
  example_started(name_or_example) if @suite.testcases.empty?

  if name_or_example.respond_to?(:execution_result) # RSpec 2
    failure = RSpec2Failure.new(name_or_example, @formatter)
  else
    failure = RSpecFailure.new(rest[1]) # example_failed(name, counter, failure) in RSpec 1
  end

  spec = @suite.testcases.last
  spec.finish
  spec.name = description_for(name_or_example)
  spec.failures << failure
end

#example_group_finished(example_group) ⇒ Object



121
122
123
# File 'lib/ci/reporter/rspec.rb', line 121

def example_group_finished(example_group)
  @formatter.example_group_finished(example_group)
end

#example_group_started(example_group) ⇒ Object

rspec >= 1.2.4



116
117
118
119
# File 'lib/ci/reporter/rspec.rb', line 116

def example_group_started(example_group)
  @formatter.example_group_started(example_group)
  new_suite(description_for(example_group))
end

#example_passed(name_or_example) ⇒ Object



150
151
152
153
154
155
# File 'lib/ci/reporter/rspec.rb', line 150

def example_passed(name_or_example)
  @formatter.example_passed(name_or_example)
  spec = @suite.testcases.last
  spec.finish
  spec.name = description_for(name_or_example)
end

#example_pending(*args) ⇒ Object



157
158
159
160
161
162
163
164
# File 'lib/ci/reporter/rspec.rb', line 157

def example_pending(*args)
  @formatter.example_pending(*args)
  name = description_for(args[0])
  spec = @suite.testcases.last
  spec.finish
  spec.name = "#{name} (PENDING)"
  spec.skipped = true
end

#example_started(name_or_example) ⇒ Object



125
126
127
128
129
130
# File 'lib/ci/reporter/rspec.rb', line 125

def example_started(name_or_example)
  @formatter.example_started(name_or_example)
  spec = TestCase.new
  @suite.testcases << spec
  spec.start
end

#start(spec_count) ⇒ Object



99
100
101
# File 'lib/ci/reporter/rspec.rb', line 99

def start(spec_count)
  @formatter.start(spec_count)
end

#start_dumpObject



166
167
168
# File 'lib/ci/reporter/rspec.rb', line 166

def start_dump
  @formatter.start_dump
end