Name | Total Lines | Lines of Code | Total Coverage | Code Coverage |
---|---|---|---|---|
rcov/ruby/1.8/gems/rspec-core-2.5.1/lib/rspec/core/example.rb | 167 | 138 | 85.63%
|
82.61%
|
Code reported as executed by Ruby looks like this...and this: this line is also marked as covered.Lines considered as run by rcov, but not reported by Ruby, look like this,and this: these lines were inferred by rcov (using simple heuristics).Finally, here's a line marked as not executed.
1 module RSpec |
2 module Core |
3 class Example |
4 |
5 attr_reader :metadata, :options, :example_group_instance |
6 |
7 def self.delegate_to_metadata(*keys) |
8 keys.each do |key| |
9 define_method(key) {@metadata[key]} |
10 end |
11 end |
12 |
13 delegate_to_metadata :description, :full_description, :execution_result, :file_path, :pending, :location |
14 |
15 def initialize(example_group_class, desc, options, example_block=nil) |
16 @example_group_class, @options, @example_block = example_group_class, options, example_block |
17 @metadata = @example_group_class.metadata.for_example(desc, options) |
18 @exception = nil |
19 @pending_declared_in_example = false |
20 end |
21 |
22 def example_group |
23 @example_group_class |
24 end |
25 |
26 def around_hooks |
27 @around_hooks ||= example_group.around_hooks_for(self) |
28 end |
29 |
30 def apply?(predicate, filters) |
31 @metadata.apply?(predicate, filters) || |
32 @example_group_class.apply?(predicate, filters) |
33 end |
34 |
35 alias_method :pending?, :pending |
36 |
37 def run(example_group_instance, reporter) |
38 @example_group_instance = example_group_instance |
39 @example_group_instance.example = self |
40 |
41 start(reporter) |
42 |
43 begin |
44 unless pending |
45 with_pending_capture do |
46 with_around_hooks do |
47 begin |
48 run_before_each |
49 @example_group_instance.instance_eval(&@example_block) |
50 rescue Exception => e |
51 set_exception(e) |
52 ensure |
53 run_after_each |
54 end |
55 end |
56 end |
57 end |
58 rescue Exception => e |
59 set_exception(e) |
60 ensure |
61 @example_group_instance.example = nil |
62 assign_auto_description |
63 end |
64 |
65 finish(reporter) |
66 end |
67 |
68 def set_exception(exception) |
69 @exception ||= exception |
70 end |
71 |
72 def fail_fast(reporter, exception) |
73 start(reporter) |
74 set_exception(exception) |
75 finish(reporter) |
76 end |
77 |
78 def self.procsy(metadata, &block) |
79 Proc.new(&block).extend(Procsy).with(metadata) |
80 end |
81 |
82 module Procsy |
83 attr_reader :metadata |
84 |
85 def self.extended(object) |
86 def object.run; call; end |
87 end |
88 |
89 def with(metadata) |
90 @metadata = metadata |
91 self |
92 end |
93 end |
94 |
95 private |
96 |
97 def with_pending_capture |
98 @pending_declared_in_example = catch(:pending_declared_in_example) do |
99 yield |
100 throw :pending_declared_in_example, false |
101 end |
102 end |
103 |
104 def with_around_hooks(&block) |
105 if around_hooks.empty? |
106 yield |
107 else |
108 @example_group_class.eval_around_eachs(self, Example.procsy(metadata, &block)).call |
109 end |
110 end |
111 |
112 def start(reporter) |
113 reporter.example_started(self) |
114 record :started_at => Time.now |
115 end |
116 |
117 def finish(reporter) |
118 if @exception |
119 record_finished 'failed', :exception => @exception |
120 reporter.example_failed self |
121 false |
122 elsif @pending_declared_in_example |
123 record_finished 'pending', :pending_message => @pending_declared_in_example |
124 reporter.example_pending self |
125 true |
126 elsif pending |
127 record_finished 'pending', :pending_message => 'Not Yet Implemented' |
128 reporter.example_pending self |
129 true |
130 else |
131 record_finished 'passed' |
132 reporter.example_passed self |
133 true |
134 end |
135 end |
136 |
137 def record_finished(status, results={}) |
138 finished_at = Time.now |
139 record results.merge(:status => status, :finished_at => finished_at, :run_time => (finished_at - execution_result[:started_at])) |
140 end |
141 |
142 def run_before_each |
143 @example_group_instance.setup_mocks_for_rspec if @example_group_instance.respond_to?(:setup_mocks_for_rspec) |
144 @example_group_class.eval_before_eachs(self) |
145 end |
146 |
147 def run_after_each |
148 @example_group_class.eval_after_eachs(self) |
149 @example_group_instance.verify_mocks_for_rspec if @example_group_instance.respond_to?(:verify_mocks_for_rspec) |
150 ensure |
151 @example_group_instance.teardown_mocks_for_rspec if @example_group_instance.respond_to?(:teardown_mocks_for_rspec) |
152 end |
153 |
154 def assign_auto_description |
155 if description.empty? and !pending? |
156 metadata[:description] = RSpec::Matchers.generated_description |
157 RSpec::Matchers.clear_generated_description |
158 end |
159 end |
160 |
161 def record(results={}) |
162 execution_result.update(results) |
163 end |
164 |
165 end |
166 end |
167 end |
Generated on Fri Apr 22 17:22:42 -0700 2011 with rcov 0.9.8