simplecov 0.11.2 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/spec/result_spec.rb CHANGED
@@ -1,207 +1,209 @@
1
1
  require "helper"
2
2
 
3
- describe "result" do
4
- context "with a (mocked) Coverage.result" do
5
- before do
6
- @prev_filters = SimpleCov.filters
7
- SimpleCov.filters = []
8
- @prev_groups = SimpleCov.groups
9
- SimpleCov.groups = {}
10
- @prev_formatter = SimpleCov.formatter
11
- SimpleCov.formatter = nil
12
- end
13
-
14
- after do
15
- SimpleCov.filters = @prev_filters
16
- SimpleCov.groups = @prev_groups
17
- SimpleCov.formatter = @prev_formatter
18
- end
19
-
20
- let(:original_result) do
21
- {
22
- source_fixture("sample.rb") => [nil, 1, 1, 1, nil, nil, 1, 1, nil, nil],
23
- source_fixture("app/models/user.rb") => [nil, 1, 1, 1, nil, nil, 1, 0, nil, nil],
24
- source_fixture("app/controllers/sample_controller.rb") => [nil, 1, 1, 1, nil, nil, 1, 0, nil, nil],
25
- }
26
- end
27
-
28
- context "a simple cov result initialized from that" do
29
- subject { SimpleCov::Result.new(original_result) }
30
-
31
- it "has 3 filenames" do
32
- expect(subject.filenames.count).to eq(3)
33
- end
34
-
35
- it "has 3 source files" do
36
- expect(subject.source_files.count).to eq(3)
37
- subject.source_files.each do |source_file|
38
- expect(source_file).to be_a SimpleCov::SourceFile
39
- end
3
+ if SimpleCov.usable?
4
+ describe "result" do
5
+ context "with a (mocked) Coverage.result" do
6
+ before do
7
+ @prev_filters = SimpleCov.filters
8
+ SimpleCov.filters = []
9
+ @prev_groups = SimpleCov.groups
10
+ SimpleCov.groups = {}
11
+ @prev_formatter = SimpleCov.formatter
12
+ SimpleCov.formatter = nil
40
13
  end
41
14
 
42
- it "returns an instance of SimpleCov::FileList for source_files and files" do
43
- expect(subject.files).to be_a SimpleCov::FileList
44
- expect(subject.source_files).to be_a SimpleCov::FileList
15
+ after do
16
+ SimpleCov.filters = @prev_filters
17
+ SimpleCov.groups = @prev_groups
18
+ SimpleCov.formatter = @prev_formatter
45
19
  end
46
20
 
47
- it "has files equal to source_files" do
48
- expect(subject.files).to eq(subject.source_files)
21
+ let(:original_result) do
22
+ {
23
+ source_fixture("sample.rb") => [nil, 1, 1, 1, nil, nil, 1, 1, nil, nil],
24
+ source_fixture("app/models/user.rb") => [nil, 1, 1, 1, nil, nil, 1, 0, nil, nil],
25
+ source_fixture("app/controllers/sample_controller.rb") => [nil, 1, 1, 1, nil, nil, 1, 0, nil, nil],
26
+ }
49
27
  end
50
28
 
51
- it "has accurate covered percent" do
52
- # in our fixture, there are 13 covered line (result in 1) in all 15 relevant line (result in non-nil)
53
- expect(subject.covered_percent).to eq(86.66666666666667)
54
- end
29
+ context "a simple cov result initialized from that" do
30
+ subject { SimpleCov::Result.new(original_result) }
55
31
 
56
- it "has accurate covered percentages" do
57
- expect(subject.covered_percentages).to eq([80.0, 80.0, 100.0])
58
- end
32
+ it "has 3 filenames" do
33
+ expect(subject.filenames.count).to eq(3)
34
+ end
59
35
 
60
- it "has accurate least covered file" do
61
- expect(subject.least_covered_file).to match(/sample_controller.rb/)
62
- end
36
+ it "has 3 source files" do
37
+ expect(subject.source_files.count).to eq(3)
38
+ subject.source_files.each do |source_file|
39
+ expect(source_file).to be_a SimpleCov::SourceFile
40
+ end
41
+ end
63
42
 
64
- [:covered_percent, :covered_percentages, :least_covered_file, :covered_strength, :covered_lines, :missed_lines, :total_lines].each do |msg|
65
- it "responds to #{msg}" do
66
- expect(subject).to respond_to(msg)
43
+ it "returns an instance of SimpleCov::FileList for source_files and files" do
44
+ expect(subject.files).to be_a SimpleCov::FileList
45
+ expect(subject.source_files).to be_a SimpleCov::FileList
67
46
  end
68
- end
69
47
 
70
- context "dumped with to_hash" do
71
- it "is a hash" do
72
- expect(subject.to_hash).to be_a Hash
48
+ it "has files equal to source_files" do
49
+ expect(subject.files).to eq(subject.source_files)
73
50
  end
74
51
 
75
- context "loaded back with from_hash" do
76
- let(:dumped_result) do
77
- SimpleCov::Result.from_hash(subject.to_hash)
78
- end
52
+ it "has accurate covered percent" do
53
+ # in our fixture, there are 13 covered line (result in 1) in all 15 relevant line (result in non-nil)
54
+ expect(subject.covered_percent).to eq(86.66666666666667)
55
+ end
79
56
 
80
- it "has 3 source files" do
81
- expect(dumped_result.source_files.count).to eq(subject.source_files.count)
82
- end
57
+ it "has accurate covered percentages" do
58
+ expect(subject.covered_percentages).to eq([80.0, 80.0, 100.0])
59
+ end
83
60
 
84
- it "has the same covered_percent" do
85
- expect(dumped_result.covered_percent).to eq(subject.covered_percent)
86
- end
61
+ it "has accurate least covered file" do
62
+ expect(subject.least_covered_file).to match(/sample_controller.rb/)
63
+ end
87
64
 
88
- it "has the same covered_percentages" do
89
- expect(dumped_result.covered_percentages).to eq(subject.covered_percentages)
65
+ [:covered_percent, :covered_percentages, :least_covered_file, :covered_strength, :covered_lines, :missed_lines, :total_lines].each do |msg|
66
+ it "responds to #{msg}" do
67
+ expect(subject).to respond_to(msg)
90
68
  end
69
+ end
91
70
 
92
- it "has the same timestamp" do
93
- expect(dumped_result.created_at.to_i).to eq(subject.created_at.to_i)
71
+ context "dumped with to_hash" do
72
+ it "is a hash" do
73
+ expect(subject.to_hash).to be_a Hash
94
74
  end
95
75
 
96
- it "has the same command_name" do
97
- expect(dumped_result.command_name).to eq(subject.command_name)
98
- end
76
+ context "loaded back with from_hash" do
77
+ let(:dumped_result) do
78
+ SimpleCov::Result.from_hash(subject.to_hash)
79
+ end
99
80
 
100
- it "has the same original_result" do
101
- expect(dumped_result.original_result).to eq(subject.original_result)
102
- end
103
- end
104
- end
105
- end
81
+ it "has 3 source files" do
82
+ expect(dumped_result.source_files.count).to eq(subject.source_files.count)
83
+ end
106
84
 
107
- context "with some filters set up" do
108
- before do
109
- SimpleCov.add_filter "sample.rb"
110
- end
85
+ it "has the same covered_percent" do
86
+ expect(dumped_result.covered_percent).to eq(subject.covered_percent)
87
+ end
111
88
 
112
- it "has 2 files in a new simple cov result" do
113
- expect(SimpleCov::Result.new(original_result).source_files.length).to eq(2)
114
- end
89
+ it "has the same covered_percentages" do
90
+ expect(dumped_result.covered_percentages).to eq(subject.covered_percentages)
91
+ end
115
92
 
116
- it "has 80 covered percent" do
117
- expect(SimpleCov::Result.new(original_result).covered_percent).to eq(80)
118
- end
93
+ it "has the same timestamp" do
94
+ expect(dumped_result.created_at.to_i).to eq(subject.created_at.to_i)
95
+ end
119
96
 
120
- it "has [80.0, 80.0] covered percentages" do
121
- expect(SimpleCov::Result.new(original_result).covered_percentages).to eq([80.0, 80.0])
122
- end
123
- end
97
+ it "has the same command_name" do
98
+ expect(dumped_result.command_name).to eq(subject.command_name)
99
+ end
124
100
 
125
- context "with groups set up for all files" do
126
- before do
127
- SimpleCov.add_group "Models", "app/models"
128
- SimpleCov.add_group "Controllers", ["app/controllers"]
129
- SimpleCov.add_group "Other" do |src_file|
130
- File.basename(src_file.filename) == "sample.rb"
101
+ it "has the same original_result" do
102
+ expect(dumped_result.original_result).to eq(subject.original_result)
103
+ end
104
+ end
131
105
  end
132
106
  end
133
107
 
134
- subject do
135
- SimpleCov::Result.new(original_result)
136
- end
108
+ context "with some filters set up" do
109
+ before do
110
+ SimpleCov.add_filter "sample.rb"
111
+ end
137
112
 
138
- it "has 3 groups" do
139
- expect(subject.groups.length).to eq(3)
140
- end
113
+ it "has 2 files in a new simple cov result" do
114
+ expect(SimpleCov::Result.new(original_result).source_files.length).to eq(2)
115
+ end
141
116
 
142
- it "has user.rb in 'Models' group" do
143
- expect(File.basename(subject.groups["Models"].first.filename)).to eq("user.rb")
144
- end
117
+ it "has 80 covered percent" do
118
+ expect(SimpleCov::Result.new(original_result).covered_percent).to eq(80)
119
+ end
145
120
 
146
- it "has sample_controller.rb in 'Controllers' group" do
147
- expect(File.basename(subject.groups["Controllers"].first.filename)).to eq("sample_controller.rb")
121
+ it "has [80.0, 80.0] covered percentages" do
122
+ expect(SimpleCov::Result.new(original_result).covered_percentages).to eq([80.0, 80.0])
123
+ end
148
124
  end
149
125
 
150
- context "and simple formatter being used" do
126
+ context "with groups set up for all files" do
151
127
  before do
152
- SimpleCov.formatter = SimpleCov::Formatter::SimpleFormatter
128
+ SimpleCov.add_group "Models", "app/models"
129
+ SimpleCov.add_group "Controllers", ["app/controllers"]
130
+ SimpleCov.add_group "Other" do |src_file|
131
+ File.basename(src_file.filename) == "sample.rb"
132
+ end
153
133
  end
154
134
 
155
- it "returns a formatted string with result.format!" do
156
- expect(subject.format!).to be_a String
135
+ subject do
136
+ SimpleCov::Result.new(original_result)
157
137
  end
158
- end
159
138
 
160
- context "and multi formatter being used" do
161
- before do
162
- SimpleCov.formatters = [
163
- SimpleCov::Formatter::SimpleFormatter,
164
- SimpleCov::Formatter::SimpleFormatter,
165
- ]
139
+ it "has 3 groups" do
140
+ expect(subject.groups.length).to eq(3)
166
141
  end
167
142
 
168
- it "returns an array containing formatted string with result.format!" do
169
- formatted = subject.format!
170
- expect(formatted.count).to eq(2)
171
- expect(formatted.first).to be_a String
143
+ it "has user.rb in 'Models' group" do
144
+ expect(File.basename(subject.groups["Models"].first.filename)).to eq("user.rb")
172
145
  end
173
- end
174
- end
175
146
 
176
- context "with groups set up that do not match all files" do
177
- before do
178
- SimpleCov.configure do
179
- add_group "Models", "app/models"
180
- add_group "Controllers", "app/controllers"
147
+ it "has sample_controller.rb in 'Controllers' group" do
148
+ expect(File.basename(subject.groups["Controllers"].first.filename)).to eq("sample_controller.rb")
181
149
  end
182
- end
183
150
 
184
- subject { SimpleCov::Result.new(original_result) }
151
+ context "and simple formatter being used" do
152
+ before do
153
+ SimpleCov.formatter = SimpleCov::Formatter::SimpleFormatter
154
+ end
185
155
 
186
- it "has 3 groups" do
187
- expect(subject.groups.length).to eq(3)
188
- end
156
+ it "returns a formatted string with result.format!" do
157
+ expect(subject.format!).to be_a String
158
+ end
159
+ end
189
160
 
190
- it "has 1 item per group" do
191
- subject.groups.each_value do |files|
192
- expect(files.length).to eq(1)
161
+ context "and multi formatter being used" do
162
+ before do
163
+ SimpleCov.formatters = [
164
+ SimpleCov::Formatter::SimpleFormatter,
165
+ SimpleCov::Formatter::SimpleFormatter,
166
+ ]
167
+ end
168
+
169
+ it "returns an array containing formatted string with result.format!" do
170
+ formatted = subject.format!
171
+ expect(formatted.count).to eq(2)
172
+ expect(formatted.first).to be_a String
173
+ end
193
174
  end
194
175
  end
195
176
 
196
- it 'has sample.rb in "Ungrouped" group' do
197
- expect(File.basename(subject.groups["Ungrouped"].first.filename)).to eq("sample.rb")
198
- end
177
+ context "with groups set up that do not match all files" do
178
+ before do
179
+ SimpleCov.configure do
180
+ add_group "Models", "app/models"
181
+ add_group "Controllers", "app/controllers"
182
+ end
183
+ end
199
184
 
200
- it "returns all groups as instances of SimpleCov::FileList" do
201
- subject.groups.each_value do |files|
202
- expect(files).to be_a SimpleCov::FileList
185
+ subject { SimpleCov::Result.new(original_result) }
186
+
187
+ it "has 3 groups" do
188
+ expect(subject.groups.length).to eq(3)
189
+ end
190
+
191
+ it "has 1 item per group" do
192
+ subject.groups.each_value do |files|
193
+ expect(files.length).to eq(1)
194
+ end
195
+ end
196
+
197
+ it 'has sample.rb in "Ungrouped" group' do
198
+ expect(File.basename(subject.groups["Ungrouped"].first.filename)).to eq("sample.rb")
199
+ end
200
+
201
+ it "returns all groups as instances of SimpleCov::FileList" do
202
+ subject.groups.each_value do |files|
203
+ expect(files).to be_a SimpleCov::FileList
204
+ end
203
205
  end
204
206
  end
205
207
  end
206
208
  end
207
- end if SimpleCov.usable?
209
+ end
@@ -4,14 +4,11 @@ require "helper"
4
4
  # See https://github.com/colszowka/simplecov/issues/5
5
5
  describe "return codes" do
6
6
  context "inside fixtures/frameworks" do
7
- before do
8
- @current_dir = Dir.getwd
9
- Dir.chdir(File.join(File.dirname(__FILE__), "fixtures", "frameworks"))
10
- FileUtils.rm_rf("./coverage")
11
- end
12
-
13
- after do
14
- Dir.chdir(@current_dir)
7
+ around do |test|
8
+ Dir.chdir(File.join(File.dirname(__FILE__), "fixtures", "frameworks")) do
9
+ FileUtils.rm_rf("./coverage")
10
+ test.call
11
+ end
15
12
  end
16
13
 
17
14
  it "has return code 0 when running testunit_good.rb" do
@@ -1,38 +1,70 @@
1
1
  require "helper"
2
2
 
3
- describe SimpleCov::SourceFile::Line do
4
- context "a source line" do
5
- subject do
6
- SimpleCov::SourceFile::Line.new("# the ruby source", 5, 3)
7
- end
3
+ if SimpleCov.usable?
4
+ describe SimpleCov::SourceFile::Line do
5
+ context "a source line" do
6
+ subject do
7
+ SimpleCov::SourceFile::Line.new("# the ruby source", 5, 3)
8
+ end
8
9
 
9
- it 'returns "# the ruby source" as src' do
10
- expect(subject.src).to eq("# the ruby source")
11
- end
10
+ it 'returns "# the ruby source" as src' do
11
+ expect(subject.src).to eq("# the ruby source")
12
+ end
12
13
 
13
- it "returns the same for source as for src" do
14
- expect(subject.src).to eq(subject.source)
15
- end
14
+ it "returns the same for source as for src" do
15
+ expect(subject.src).to eq(subject.source)
16
+ end
16
17
 
17
- it "has line number 5" do
18
- expect(subject.line_number).to eq(5)
19
- end
18
+ it "has line number 5" do
19
+ expect(subject.line_number).to eq(5)
20
+ end
20
21
 
21
- it "has equal line_number, line and number" do
22
- expect(subject.line).to eq(subject.line_number)
23
- expect(subject.number).to eq(subject.line_number)
22
+ it "has equal line_number, line and number" do
23
+ expect(subject.line).to eq(subject.line_number)
24
+ expect(subject.number).to eq(subject.line_number)
25
+ end
26
+
27
+ context "flagged as skipped!" do
28
+ before do
29
+ subject.skipped!
30
+ end
31
+ it "is not covered" do
32
+ expect(subject).not_to be_covered
33
+ end
34
+
35
+ it "is skipped" do
36
+ expect(subject).to be_skipped
37
+ end
38
+
39
+ it "is not missed" do
40
+ expect(subject).not_to be_missed
41
+ end
42
+
43
+ it "is not never" do
44
+ expect(subject).not_to be_never
45
+ end
46
+
47
+ it "status is skipped" do
48
+ expect(subject.status).to eq("skipped")
49
+ end
50
+ end
24
51
  end
25
52
 
26
- context "flagged as skipped!" do
27
- before do
28
- subject.skipped!
53
+ context "A source line with coverage" do
54
+ subject do
55
+ SimpleCov::SourceFile::Line.new("# the ruby source", 5, 3)
29
56
  end
30
- it "is not covered" do
31
- expect(subject).not_to be_covered
57
+
58
+ it "has coverage of 3" do
59
+ expect(subject.coverage).to eq(3)
60
+ end
61
+
62
+ it "is covered" do
63
+ expect(subject).to be_covered
32
64
  end
33
65
 
34
- it "is skipped" do
35
- expect(subject).to be_skipped
66
+ it "is not skipped" do
67
+ expect(subject).not_to be_skipped
36
68
  end
37
69
 
38
70
  it "is not missed" do
@@ -43,111 +75,81 @@ describe SimpleCov::SourceFile::Line do
43
75
  expect(subject).not_to be_never
44
76
  end
45
77
 
46
- it "status is skipped" do
47
- expect(subject.status).to eq("skipped")
78
+ it "status is covered" do
79
+ expect(subject.status).to eq("covered")
48
80
  end
49
81
  end
50
- end
51
-
52
- context "A source line with coverage" do
53
- subject do
54
- SimpleCov::SourceFile::Line.new("# the ruby source", 5, 3)
55
- end
56
82
 
57
- it "has coverage of 3" do
58
- expect(subject.coverage).to eq(3)
59
- end
60
-
61
- it "is covered" do
62
- expect(subject).to be_covered
63
- end
64
-
65
- it "is not skipped" do
66
- expect(subject).not_to be_skipped
67
- end
68
-
69
- it "is not missed" do
70
- expect(subject).not_to be_missed
71
- end
83
+ context "A source line without coverage" do
84
+ subject do
85
+ SimpleCov::SourceFile::Line.new("# the ruby source", 5, 0)
86
+ end
72
87
 
73
- it "is not never" do
74
- expect(subject).not_to be_never
75
- end
88
+ it "has coverage of 0" do
89
+ expect(subject.coverage).to be_zero
90
+ end
76
91
 
77
- it "status is covered" do
78
- expect(subject.status).to eq("covered")
79
- end
80
- end
92
+ it "is not covered" do
93
+ expect(subject).not_to be_covered
94
+ end
81
95
 
82
- context "A source line without coverage" do
83
- subject do
84
- SimpleCov::SourceFile::Line.new("# the ruby source", 5, 0)
85
- end
96
+ it "is not skipped" do
97
+ expect(subject).not_to be_skipped
98
+ end
86
99
 
87
- it "has coverage of 0" do
88
- expect(subject.coverage).to be_zero
89
- end
100
+ it "is missed" do
101
+ expect(subject).to be_missed
102
+ end
90
103
 
91
- it "is not covered" do
92
- expect(subject).not_to be_covered
93
- end
104
+ it "is not never" do
105
+ expect(subject).not_to be_never
106
+ end
94
107
 
95
- it "is not skipped" do
96
- expect(subject).not_to be_skipped
108
+ it "status is missed" do
109
+ expect(subject.status).to eq("missed")
110
+ end
97
111
  end
98
112
 
99
- it "is missed" do
100
- expect(subject).to be_missed
101
- end
113
+ context "A source line with no code" do
114
+ subject do
115
+ SimpleCov::SourceFile::Line.new("# the ruby source", 5, nil)
116
+ end
102
117
 
103
- it "is not never" do
104
- expect(subject).not_to be_never
105
- end
118
+ it "has nil coverage" do
119
+ expect(subject.coverage).to be_nil
120
+ end
106
121
 
107
- it "status is missed" do
108
- expect(subject.status).to eq("missed")
109
- end
110
- end
122
+ it "is not covered" do
123
+ expect(subject).not_to be_covered
124
+ end
111
125
 
112
- context "A source line with no code" do
113
- subject do
114
- SimpleCov::SourceFile::Line.new("# the ruby source", 5, nil)
115
- end
126
+ it "is not skipped" do
127
+ expect(subject).not_to be_skipped
128
+ end
116
129
 
117
- it "has nil coverage" do
118
- expect(subject.coverage).to be_nil
119
- end
130
+ it "is not missed" do
131
+ expect(subject).not_to be_missed
132
+ end
120
133
 
121
- it "is not covered" do
122
- expect(subject).not_to be_covered
123
- end
134
+ it "is never" do
135
+ expect(subject).to be_never
136
+ end
124
137
 
125
- it "is not skipped" do
126
- expect(subject).not_to be_skipped
138
+ it "status is never" do
139
+ expect(subject.status).to eq("never")
140
+ end
127
141
  end
128
142
 
129
- it "is not missed" do
130
- expect(subject).not_to be_missed
143
+ it "raises ArgumentError when initialized with invalid src" do
144
+ expect { SimpleCov::SourceFile::Line.new(:symbol, 5, 3) }.to raise_error(ArgumentError)
131
145
  end
132
146
 
133
- it "is never" do
134
- expect(subject).to be_never
147
+ it "raises ArgumentError when initialized with invalid line_number" do
148
+ expect { SimpleCov::SourceFile::Line.new("some source", "five", 3) }.to raise_error(ArgumentError)
135
149
  end
136
150
 
137
- it "status is never" do
138
- expect(subject.status).to eq("never")
151
+ it "raises ArgumentError when initialized with invalid coverage" do
152
+ expect { SimpleCov::SourceFile::Line.new("some source", 5, "three") }.to raise_error(ArgumentError)
139
153
  end
140
154
  end
141
-
142
- it "raises ArgumentError when initialized with invalid src" do
143
- expect { SimpleCov::SourceFile::Line.new(:symbol, 5, 3) }.to raise_error(ArgumentError)
144
- end
145
-
146
- it "raises ArgumentError when initialized with invalid line_number" do
147
- expect { SimpleCov::SourceFile::Line.new("some source", "five", 3) }.to raise_error(ArgumentError)
148
- end
149
-
150
- it "raises ArgumentError when initialized with invalid coverage" do
151
- expect { SimpleCov::SourceFile::Line.new("some source", 5, "three") }.to raise_error(ArgumentError)
152
- end
153
- end if SimpleCov.usable?
155
+ end