Class: SpecMarker
- Inherits:
-
RSpec::Core::Formatters::BaseFormatter
- Object
- RSpec::Core::Formatters::BaseFormatter
- SpecMarker
- Defined in:
- lib/spec_marker.rb
Constant Summary collapse
- VERSION =
"0.0.3"
Class Method Summary collapse
- ._join(formatter) ⇒ Object
- ._leave(formatter) ⇒ Object
- .mark(tag, meta_or_kind = {}, kind = nil, meta_for_search = nil) ⇒ Object
Instance Method Summary collapse
- #example_failed(example) ⇒ Object
- #example_group_finished(group) ⇒ Object
- #example_group_started(group) ⇒ Object
- #example_passed(example) ⇒ Object
- #example_pending(example) ⇒ Object
- #example_started(example) ⇒ Object
-
#initialize(*args) ⇒ SpecMarker
constructor
A new instance of SpecMarker.
- #mark(tag, meta_or_kind = {}, kind = nil, meta_for_search = nil) ⇒ Object
- #start(example_count) ⇒ Object
- #stop ⇒ Object
Constructor Details
#initialize(*args) ⇒ SpecMarker
Returns a new instance of SpecMarker.
36 37 38 39 |
# File 'lib/spec_marker.rb', line 36 def initialize(*args) super @marks = [] end |
Class Method Details
._join(formatter) ⇒ Object
26 27 28 29 |
# File 'lib/spec_marker.rb', line 26 def _join(formatter) @listeners ||= [] @listeners << formatter unless @listeners.include?(formatter) end |
._leave(formatter) ⇒ Object
31 32 33 |
# File 'lib/spec_marker.rb', line 31 def _leave(formatter) (@listeners ||= []).delete formatter end |
.mark(tag, meta_or_kind = {}, kind = nil, meta_for_search = nil) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/spec_marker.rb', line 9 def mark(tag, ={}, kind=nil, =nil) if block_given? begin mark(tag, , :start) return yield ensure mark(tag, , :end) end else @listeners ||= [] @listeners.each do |listener| listener.mark(tag, , kind, ) end self end end |
Instance Method Details
#example_failed(example) ⇒ Object
94 95 96 97 |
# File 'lib/spec_marker.rb', line 94 def example_failed(example) super mark :example, (example, :failed), :end, (example) end |
#example_group_finished(group) ⇒ Object
99 100 101 102 |
# File 'lib/spec_marker.rb', line 99 def example_group_finished(group) super mark :example_group, (group), :end end |
#example_group_started(group) ⇒ Object
74 75 76 77 |
# File 'lib/spec_marker.rb', line 74 def example_group_started(group) super mark :example_group, (group), :start end |
#example_passed(example) ⇒ Object
84 85 86 87 |
# File 'lib/spec_marker.rb', line 84 def example_passed(example) super mark :example, (example, :passed), :end, (example) end |
#example_pending(example) ⇒ Object
89 90 91 92 |
# File 'lib/spec_marker.rb', line 89 def example_pending(example) super mark :example, (example, :pending), :end, (example) end |
#example_started(example) ⇒ Object
79 80 81 82 |
# File 'lib/spec_marker.rb', line 79 def example_started(example) super mark :example, (example), :start end |
#mark(tag, meta_or_kind = {}, kind = nil, meta_for_search = nil) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/spec_marker.rb', line 53 def mark(tag, ={}, kind=nil, =nil) if .is_a?(Hash) = elsif kind.nil? && .is_a?(Symbol) = {} kind = end m = {:tag => tag, :at => Time.now.to_f, :meta => , :kind => kind} if kind == :end start = @marks.reverse_each.find { |mark| mark[:kind] == :start && mark[:tag] == tag && mark[:meta] == ( || )} if start m[:elapsed] = m[:at] - start[:at] end end @marks << m output.puts "[#{tag}#{kind && ":#{kind}"}][#{"%.5f" % m[:at]}#{m[:elapsed] && (" (%.5f)" % m[:elapsed])}] #{m.to_json}" end |
#start(example_count) ⇒ Object
41 42 43 44 45 |
# File 'lib/spec_marker.rb', line 41 def start(example_count) super self.class._join(self) mark :suite, :start end |
#stop ⇒ Object
47 48 49 50 51 |
# File 'lib/spec_marker.rb', line 47 def stop super self.class._leave(self) mark :suite, :end end |