1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
require_relative '../../spec_helper'
require 'coverage'
describe 'Coverage.result' do
before :all do
@class_file = fixture __FILE__, 'some_class.rb'
@config_file = fixture __FILE__, 'start_coverage.rb'
@eval_code_file = fixture __FILE__, 'eval_code.rb'
end
after :each do
$LOADED_FEATURES.delete(@class_file)
$LOADED_FEATURES.delete(@config_file)
$LOADED_FEATURES.delete(@eval_code_file)
end
it 'gives the covered files as a hash with arrays of count or nil' do
Coverage.start
require @class_file.chomp('.rb')
result = Coverage.result
result.should == {
@class_file => [
nil, nil, 1, nil, nil, 1, nil, nil, 0, nil, nil, nil, nil, nil, nil, nil
]
}
end
it 'no requires/loads should give empty hash' do
Coverage.start
result = Coverage.result
result.should == {}
end
it 'second call should give exception' do
Coverage.start
require @class_file.chomp('.rb')
Coverage.result
-> {
Coverage.result
}.should raise_error(RuntimeError, 'coverage measurement is not enabled')
end
it 'second run should give same result' do
Coverage.start
load @class_file
result1 = Coverage.result
Coverage.start
load @class_file
result2 = Coverage.result
result2.should == result1
end
it 'second run without load/require should give empty hash' do
Coverage.start
require @class_file.chomp('.rb')
Coverage.result
Coverage.start
result = Coverage.result
result.should == {}
end
ruby_version_is ''...'3.1' do
it 'second Coverage.start does nothing' do
Coverage.start
require @config_file.chomp('.rb')
result = Coverage.result
result.should == { @config_file => [1, 1, 1] }
end
end
ruby_version_is '3.1' do
it 'second Coverage.start give exception' do
Coverage.start
-> {
require @config_file.chomp('.rb')
}.should raise_error(RuntimeError, 'coverage measurement is already setup')
ensure
Coverage.result
end
end
it 'does not include the file starting coverage since it is not tracked' do
require @config_file.chomp('.rb')
Coverage.result.should_not include(@config_file)
end
ruby_version_is '3.1'...'3.2' do
it 'returns the correct results when eval is used' do
Coverage.start
require @eval_code_file.chomp('.rb')
result = Coverage.result
result.should == {
@eval_code_file => [
1, nil, 1, nil, 1, nil, nil, nil, nil, nil, 1
]
}
end
end
ruby_version_is '3.2' do
it 'indicates support for different features' do
Coverage.supported?(:lines).should == true
end
it 'returns the correct results when eval coverage is enabled' do
Coverage.supported?(:eval).should == true
Coverage.start(lines: true, eval: true)
require @eval_code_file.chomp('.rb')
result = Coverage.result
result.should == {
@eval_code_file => {
lines: [1, nil, 1, nil, 1, 1, nil, nil, nil, nil, 1]
}
}
end
it 'returns the correct results when eval coverage is enabled' do
Coverage.supported?(:eval).should == true
Coverage.start(lines: true, eval: false)
require @eval_code_file.chomp('.rb')
result = Coverage.result
result.should == {
@eval_code_file => {
lines: [1, nil, 1, nil, 1, nil, nil, nil, nil, nil, 1]
}
}
end
end
end
|