Skip to content

Commit 27ce948

Browse files
committed
Add missing specs for stop and clear options
1 parent b15c638 commit 27ce948

File tree

2 files changed

+198
-0
lines changed

2 files changed

+198
-0
lines changed

spec/ruby/library/coverage/result_spec.rb

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,16 @@
88
@eval_code_file = fixture __FILE__, 'eval_code.rb'
99
end
1010

11+
before :each do
12+
Coverage.running?.should == false
13+
end
14+
1115
after :each do
1216
$LOADED_FEATURES.delete(@class_file)
1317
$LOADED_FEATURES.delete(@config_file)
1418
$LOADED_FEATURES.delete(@eval_code_file)
19+
20+
Coverage.result if Coverage.running?
1521
end
1622

1723
it 'gives the covered files as a hash with arrays of count or nil' do
@@ -158,4 +164,194 @@
158164
}
159165
end
160166
end
167+
168+
it "disables coverage measurement when stop option is not specified" do
169+
Coverage.start
170+
require @class_file.chomp('.rb')
171+
172+
Coverage.result
173+
Coverage.running?.should == false
174+
end
175+
176+
it "disables coverage measurement when stop: true option is specified" do
177+
Coverage.start
178+
require @class_file.chomp('.rb')
179+
180+
-> {
181+
Coverage.result(stop: true)
182+
}.should complain /warning: stop implies clear/
183+
184+
Coverage.running?.should == false
185+
end
186+
187+
it "does not disable coverage measurement when stop: false option is specified" do
188+
Coverage.start
189+
require @class_file.chomp('.rb')
190+
191+
Coverage.result(stop: false)
192+
Coverage.running?.should == true
193+
end
194+
195+
it "does not disable coverage measurement when stop option is not specified but clear: true specified" do
196+
Coverage.start
197+
require @class_file.chomp('.rb')
198+
199+
Coverage.result(clear: true)
200+
Coverage.running?.should == true
201+
end
202+
203+
it "does not disable coverage measurement when stop option is not specified but clear: false specified" do
204+
Coverage.start
205+
require @class_file.chomp('.rb')
206+
207+
Coverage.result(clear: false)
208+
Coverage.running?.should == true
209+
end
210+
211+
it "disables coverage measurement when stop: true and clear: true specified" do
212+
Coverage.start
213+
require @class_file.chomp('.rb')
214+
215+
Coverage.result(stop: true, clear: true)
216+
Coverage.running?.should == false
217+
end
218+
219+
it "disables coverage measurement when stop: true and clear: false specified" do
220+
Coverage.start
221+
require @class_file.chomp('.rb')
222+
223+
-> {
224+
Coverage.result(stop: true, clear: false)
225+
}.should complain /warning: stop implies clear/
226+
227+
Coverage.running?.should == false
228+
end
229+
230+
it "does not disable coverage measurement when stop: false and clear: true specified" do
231+
Coverage.start
232+
require @class_file.chomp('.rb')
233+
234+
Coverage.result(stop: false, clear: true)
235+
Coverage.running?.should == true
236+
end
237+
238+
it "does not disable coverage measurement when stop: false and clear: false specified" do
239+
Coverage.start
240+
require @class_file.chomp('.rb')
241+
242+
Coverage.result(stop: false, clear: false)
243+
Coverage.running?.should == true
244+
end
245+
246+
it "resets counters (remove them) when stop: true specified but clear option is not specified" do
247+
Coverage.start
248+
require @class_file.chomp('.rb')
249+
250+
-> {
251+
Coverage.result(stop: true) # clears counters
252+
}.should complain /warning: stop implies clear/
253+
254+
Coverage.start
255+
Coverage.peek_result.should == {}
256+
end
257+
258+
it "resets counters (remove them) when stop: true and clear: true specified" do
259+
Coverage.start
260+
require @class_file.chomp('.rb')
261+
262+
Coverage.result(stop: true, clear: true) # clears counters
263+
264+
Coverage.start
265+
Coverage.peek_result.should == {}
266+
end
267+
268+
it "resets counters (remove them) when stop: true and clear: false specified" do
269+
Coverage.start
270+
require @class_file.chomp('.rb')
271+
272+
-> {
273+
Coverage.result(stop: true, clear: false) # clears counters
274+
}.should complain /warning: stop implies clear/
275+
276+
Coverage.start
277+
Coverage.peek_result.should == {}
278+
end
279+
280+
it "resets counters (remove them) when both stop and clear options are not specified" do
281+
Coverage.start
282+
require @class_file.chomp('.rb')
283+
284+
Coverage.result # clears counters
285+
286+
Coverage.start
287+
Coverage.peek_result.should == {}
288+
end
289+
290+
it "clears counters (sets 0 values) when stop is not specified but clear: true specified" do
291+
Coverage.start
292+
require @class_file.chomp('.rb')
293+
294+
Coverage.result(clear: true) # clears counters
295+
296+
Coverage.peek_result.should == {
297+
@class_file => [
298+
nil, nil, 0, nil, nil, 0, nil, nil, 0, nil, nil, nil, nil, nil, nil, nil
299+
]
300+
}
301+
end
302+
303+
it "does not clear counters when stop is not specified but clear: false specified" do
304+
Coverage.start
305+
require @class_file.chomp('.rb')
306+
307+
result = Coverage.result(clear: false) # doesn't clear counters
308+
result.should == {
309+
@class_file => [
310+
nil, nil, 1, nil, nil, 1, nil, nil, 0, nil, nil, nil, nil, nil, nil, nil
311+
]
312+
}
313+
314+
Coverage.peek_result.should == result
315+
end
316+
317+
it "does not clear counters when stop: false and clear is not specified" do
318+
Coverage.start
319+
require @class_file.chomp('.rb')
320+
321+
result = Coverage.result(stop: false) # doesn't clear counters
322+
result.should == {
323+
@class_file => [
324+
nil, nil, 1, nil, nil, 1, nil, nil, 0, nil, nil, nil, nil, nil, nil, nil
325+
]
326+
}
327+
328+
Coverage.peek_result.should == result
329+
end
330+
331+
it "clears counters (sets 0 values) when stop: false and clear: true specified" do
332+
Coverage.start
333+
require @class_file.chomp('.rb')
334+
335+
Coverage.result(stop: false, clear: true) # clears counters
336+
337+
Coverage.peek_result.should == {
338+
@class_file => [
339+
nil, nil, 0, nil, nil, 0, nil, nil, 0, nil, nil, nil, nil, nil, nil, nil
340+
]
341+
}
342+
end
343+
344+
it "does not clear counters when stop: false and clear: false specified" do
345+
Coverage.start
346+
require @class_file.chomp('.rb')
347+
348+
result = Coverage.result(stop: false, clear: false) # doesn't clear counters
349+
result.should == {
350+
@class_file => [
351+
nil, nil, 1, nil, nil, 1, nil, nil, 0, nil, nil, nil, nil, nil, nil, nil
352+
]
353+
}
354+
355+
Coverage.peek_result.should == result
356+
end
161357
end

spec/tags/library/coverage/result_tags.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@ fails:Coverage.result second Coverage.start give exception
22
fails:Coverage.result returns the correct results when eval coverage is enabled
33
fails:Coverage.result returns the correct results when eval coverage is disabled
44
fails:Coverage.result returns results for each mode separately when enabled :all modes
5+
fails:Coverage.result clears counters (sets 0 values) when stop is not specified but clear: true specified
6+
fails:Coverage.result clears counters (sets 0 values) when stop: false and clear: true specified

0 commit comments

Comments
 (0)