slather 1.5.0 → 1.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +94 -0
- data/lib/slather/coverage_file.rb +23 -21
- data/lib/slather/coverage_service/cobertura_xml_output.rb +1 -2
- data/lib/slather/version.rb +1 -1
- data/spec/fixtures/cobertura.xml +4 -0
- data/spec/fixtures/fixtures.xcodeproj/project.pbxproj +8 -0
- data/spec/fixtures/fixtures/more_files/Empty.h +13 -0
- data/spec/fixtures/fixtures/more_files/Empty.m +13 -0
- data/spec/slather/coverage_file_spec.rb +64 -0
- data/spec/slather/coverage_service/coveralls_spec.rb +2 -2
- data/spec/slather/coverage_service/simple_output_spec.rb +1 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b74146844eaeb36f2504f1b3d68e590a5e10144d
|
4
|
+
data.tar.gz: baed92208b8cba0525eb4c7ed9a0089f5f6d28de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12c63ac37efb3a93bff26f71990a532ce0bc93d98fdca7f637e214b3eb7bdcaf67ad400a57f933241cf01e66f7db32a42d4971c21c9ddd69678cc69cb639384a
|
7
|
+
data.tar.gz: be09f2c02c71ca463bab39d56515b2d5de22d54ab3546950dd370a05daf5618f264cf4aeb46d02d5bd52d06cc5a121b792d524f1a5bcc75a68dd97cb6f4c563d
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
# CHANGELOG
|
2
|
+
|
3
|
+
## master
|
4
|
+
|
5
|
+
## v1.5.1
|
6
|
+
|
7
|
+
* Avoid crashes when coverage data is empty
|
8
|
+
* Fix bug which prevented source files without coverage data to be included in Cobertura xml report
|
9
|
+
[Julian Krumow](https://github.com/tarbrain)
|
10
|
+
[#34](https://github.com/venmo/slather/pull/34)
|
11
|
+
|
12
|
+
## v1.5.0
|
13
|
+
|
14
|
+
* Add support for Cobertura
|
15
|
+
[Julian Krumow](https://github.com/tarbrain)
|
16
|
+
[#30](https://github.com/venmo/slather/pull/30)
|
17
|
+
|
18
|
+
## v1.4.0
|
19
|
+
|
20
|
+
* Implement a CocoaPods plugin
|
21
|
+
[Kyle Fuller](https://github.com/kylef)
|
22
|
+
[#25](https://github.com/venmo/slather/pull/25)
|
23
|
+
|
24
|
+
* Avoid getting 'Infinity' or 'NaN' when dividing by 0.0
|
25
|
+
[Mark Larsen](https://github.com/marklarr)
|
26
|
+
|
27
|
+
* Ignore exceptions about files not existing by using 'force'
|
28
|
+
[Mark Larsen](https://github.com/marklarr)
|
29
|
+
|
30
|
+
## v1.3.0
|
31
|
+
|
32
|
+
* Add Gutter JSON output
|
33
|
+
[Boris Bügling](https://github.com/neonichu)
|
34
|
+
[#24](https://github.com/venmo/slather/pull/24)
|
35
|
+
|
36
|
+
## v1.2.1
|
37
|
+
|
38
|
+
* Fix typo --simple-output description
|
39
|
+
[Ayaka Nonaka](https://github.com/ayanonagon)
|
40
|
+
[#19](https://github.com/venmo/slather/pull/19)
|
41
|
+
|
42
|
+
* Remove broken travis pro support
|
43
|
+
[Mark Larsen](https://github.com/marklarr)
|
44
|
+
[#22](https://github.com/venmo/slather/pull/22)
|
45
|
+
|
46
|
+
* Fix exception for files without `@interface` or `@implementation`
|
47
|
+
[Piet Brauer](https://github.com/pietbrauer)
|
48
|
+
[#23](https://github.com/venmo/slather/pull/23)
|
49
|
+
|
50
|
+
## v1.2.0
|
51
|
+
|
52
|
+
* Remove duplicate coverage files, favoring the file with higher coverage.
|
53
|
+
[Ayaka Nonaka](https://github.com/ayanonagon)
|
54
|
+
[#16](https://github.com/venmo/slather/pull/16)
|
55
|
+
|
56
|
+
* Add support for access token and Travis Pro
|
57
|
+
[Chris Maddern](https://github.com/chrismaddern)
|
58
|
+
[#17](https://github.com/venmo/slather/pull/17)
|
59
|
+
|
60
|
+
## v1.1.0
|
61
|
+
|
62
|
+
* Support for code coverage of pods
|
63
|
+
[Mark Larsen](https://github.com/marklarr)
|
64
|
+
|
65
|
+
## v1.0.1
|
66
|
+
|
67
|
+
* Fix coverage search for files that contain spaces
|
68
|
+
[Mark Larsen](https://github.com/marklarr)
|
69
|
+
|
70
|
+
## v1.0.0
|
71
|
+
|
72
|
+
* beautified README
|
73
|
+
[Ayaka Nonaka](https://github.com/ayanonagon)
|
74
|
+
[#4](https://github.com/venmo/slather/pull/4)
|
75
|
+
[Kyle Fuller](https://github.com/kylef)
|
76
|
+
[#5](https://github.com/venmo/slather/pull/5)
|
77
|
+
|
78
|
+
* Add Travis automated builds
|
79
|
+
[Mark Larsen](https://github.com/marklarr)
|
80
|
+
[#6](https://github.com/venmo/slather/pull/6)
|
81
|
+
|
82
|
+
* Use `||=` instead of `unless`
|
83
|
+
[Ayaka Nonaka](https://github.com/ayanonagon)
|
84
|
+
[#7](https://github.com/venmo/slather/pull/7)
|
85
|
+
|
86
|
+
## v0.0.31
|
87
|
+
|
88
|
+
* find source files via pbx proj rather than file system
|
89
|
+
[Mark Larsen](https://github.com/marklarr)
|
90
|
+
|
91
|
+
## v0.0.3
|
92
|
+
|
93
|
+
* Initial Release
|
94
|
+
[Mark Larsen](https://github.com/marklarr)
|
@@ -45,6 +45,8 @@ module Slather
|
|
45
45
|
gcov_file_name = "./#{source_file_pathname.basename}.gcov"
|
46
46
|
if File.exists?(gcov_file_name)
|
47
47
|
gcov_data = File.new(gcov_file_name).read
|
48
|
+
else
|
49
|
+
gcov_data = ""
|
48
50
|
end
|
49
51
|
|
50
52
|
gcov_files_created.each { |file| FileUtils.rm_f(file) }
|
@@ -53,7 +55,7 @@ module Slather
|
|
53
55
|
end
|
54
56
|
|
55
57
|
def line_coverage_data
|
56
|
-
|
58
|
+
unless cleaned_gcov_data.empty?
|
57
59
|
first_line_start = cleaned_gcov_data =~ /^\s+(-|#+|[0-9+]):\s+1:/
|
58
60
|
|
59
61
|
cleaned_gcov_data[first_line_start..-1].split("\n").map do |line|
|
@@ -92,38 +94,38 @@ module Slather
|
|
92
94
|
end
|
93
95
|
|
94
96
|
def rate_lines_tested
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
def percentage_lines_tested
|
99
|
-
if num_lines_testable > 0
|
100
|
-
(num_lines_tested / num_lines_testable.to_f) * 100.0
|
97
|
+
if num_lines_testable > 0
|
98
|
+
(num_lines_tested / num_lines_testable.to_f)
|
101
99
|
else
|
102
100
|
0
|
103
101
|
end
|
104
102
|
end
|
105
103
|
|
104
|
+
def percentage_lines_tested
|
105
|
+
rate_lines_tested * 100
|
106
|
+
end
|
107
|
+
|
106
108
|
def branch_coverage_data
|
107
109
|
@branch_coverage_data ||= begin
|
108
110
|
branch_coverage_data = Hash.new
|
109
111
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
112
|
+
gcov_data.scan(/(^(\s+(-|#+|[0-9]+):\s+[1-9]+:(.*)$\r?\n)(^branch\s+[0-9]+\s+[a-zA-Z0-9]+\s+[a-zA-Z0-9]+$\r?\n)+)+/) do |data|
|
113
|
+
lines = data[0].split("\n")
|
114
|
+
line_number = lines[0].split(':')[1].strip.to_i
|
115
|
+
branch_coverage_data[line_number] = lines[1..-1].map do |line|
|
116
|
+
if line.split(' ')[2].strip == "never"
|
117
|
+
0
|
118
|
+
else
|
119
|
+
line.split(' ')[3].strip.to_i
|
120
|
+
end
|
118
121
|
end
|
119
122
|
end
|
120
|
-
}
|
121
123
|
branch_coverage_data
|
122
124
|
end
|
123
125
|
end
|
124
126
|
|
125
127
|
def branch_coverage_data_for_statement_on_line(line_number)
|
126
|
-
branch_coverage_data[line_number]
|
128
|
+
branch_coverage_data[line_number] || []
|
127
129
|
end
|
128
130
|
|
129
131
|
def num_branches_for_statement_on_line(line_number)
|
@@ -136,7 +138,7 @@ module Slather
|
|
136
138
|
|
137
139
|
def rate_branch_coverage_for_statement_on_line(line_number)
|
138
140
|
branch_data = branch_coverage_data_for_statement_on_line(line_number)
|
139
|
-
if branch_data
|
141
|
+
if branch_data.empty?
|
140
142
|
0.0
|
141
143
|
else
|
142
144
|
(num_branch_hits_for_statement_on_line(line_number) / branch_data.length.to_f)
|
@@ -160,10 +162,10 @@ module Slather
|
|
160
162
|
end
|
161
163
|
|
162
164
|
def rate_branches_tested
|
163
|
-
if (num_branches_testable
|
164
|
-
0.0
|
165
|
-
else
|
165
|
+
if (num_branches_testable > 0)
|
166
166
|
(num_branches_tested / num_branches_testable.to_f)
|
167
|
+
else
|
168
|
+
0.0
|
167
169
|
end
|
168
170
|
end
|
169
171
|
|
@@ -56,7 +56,6 @@ module Slather
|
|
56
56
|
total_package_branches_tested = 0
|
57
57
|
|
58
58
|
package_coverage_files.each do |package_coverage_file|
|
59
|
-
next unless package_coverage_file.gcov_data
|
60
59
|
class_node = create_class_node(package_coverage_file)
|
61
60
|
class_node.parent = classes_node
|
62
61
|
total_package_lines += package_coverage_file.num_lines_testable
|
@@ -128,7 +127,7 @@ module Slather
|
|
128
127
|
line_node['branch'] = "false"
|
129
128
|
line_node['hits'] = coverage_file.coverage_for_line(line)
|
130
129
|
|
131
|
-
|
130
|
+
unless coverage_file.branch_coverage_data_for_statement_on_line(line_number).empty?
|
132
131
|
line_node['branch'] = "true"
|
133
132
|
conditions_node = Nokogiri::XML::Node.new "conditions", @doc
|
134
133
|
conditions_node.parent = line_node
|
data/lib/slather/version.rb
CHANGED
data/spec/fixtures/cobertura.xml
CHANGED
@@ -48,6 +48,10 @@
|
|
48
48
|
<line number="43" branch="false" hits="2"/>
|
49
49
|
</lines>
|
50
50
|
</class>
|
51
|
+
<class name="Empty" filename="spec/fixtures/fixtures/more_files/Empty.m" line-rate="0.0000000000000000" branch-rate="0.0000000000000000" complexity="0.0">
|
52
|
+
<methods/>
|
53
|
+
<lines/>
|
54
|
+
</class>
|
51
55
|
<class name="peekaview" filename="spec/fixtures/fixtures/more_files/peekaview.m" line-rate="0.0000000000000000" branch-rate="0.0000000000000000" complexity="0.0">
|
52
56
|
<methods/>
|
53
57
|
<lines>
|
@@ -10,6 +10,8 @@
|
|
10
10
|
155BBCA519E9CB6700BACB13 /* Branches.h in Headers */ = {isa = PBXBuildFile; fileRef = 155BBCA319E9CB6700BACB13 /* Branches.h */; };
|
11
11
|
155BBCA619E9CB6700BACB13 /* Branches.m in Sources */ = {isa = PBXBuildFile; fileRef = 155BBCA419E9CB6700BACB13 /* Branches.m */; };
|
12
12
|
155BBCA819E9CCC500BACB13 /* BranchesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 155BBCA719E9CCC500BACB13 /* BranchesTests.m */; };
|
13
|
+
155D8AFE19FED984004666BA /* Empty.h in Headers */ = {isa = PBXBuildFile; fileRef = 155D8AFC19FED984004666BA /* Empty.h */; };
|
14
|
+
155D8AFF19FED984004666BA /* Empty.m in Sources */ = {isa = PBXBuildFile; fileRef = 155D8AFD19FED984004666BA /* Empty.m */; };
|
13
15
|
8C52AEF7195AAE32008A882A /* peekaview.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C52AEF5195AAE32008A882A /* peekaview.h */; };
|
14
16
|
8C52AEF8195AAE33008A882A /* peekaview.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C52AEF6195AAE32008A882A /* peekaview.m */; };
|
15
17
|
8C52AEFA195AAE70008A882A /* peekaviewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C52AEF9195AAE70008A882A /* peekaviewTests.m */; };
|
@@ -36,6 +38,8 @@
|
|
36
38
|
155BBCA319E9CB6700BACB13 /* Branches.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Branches.h; sourceTree = "<group>"; };
|
37
39
|
155BBCA419E9CB6700BACB13 /* Branches.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Branches.m; sourceTree = "<group>"; };
|
38
40
|
155BBCA719E9CCC500BACB13 /* BranchesTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BranchesTests.m; sourceTree = "<group>"; };
|
41
|
+
155D8AFC19FED984004666BA /* Empty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Empty.h; sourceTree = "<group>"; };
|
42
|
+
155D8AFD19FED984004666BA /* Empty.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Empty.m; sourceTree = "<group>"; };
|
39
43
|
8C52AEF5195AAE32008A882A /* peekaview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = peekaview.h; sourceTree = "<group>"; };
|
40
44
|
8C52AEF6195AAE32008A882A /* peekaview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = peekaview.m; sourceTree = "<group>"; };
|
41
45
|
8C52AEF9195AAE70008A882A /* peekaviewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = peekaviewTests.m; sourceTree = "<group>"; };
|
@@ -83,6 +87,8 @@
|
|
83
87
|
8C52AEF6195AAE32008A882A /* peekaview.m */,
|
84
88
|
155BBCA319E9CB6700BACB13 /* Branches.h */,
|
85
89
|
155BBCA419E9CB6700BACB13 /* Branches.m */,
|
90
|
+
155D8AFC19FED984004666BA /* Empty.h */,
|
91
|
+
155D8AFD19FED984004666BA /* Empty.m */,
|
86
92
|
);
|
87
93
|
path = more_files;
|
88
94
|
sourceTree = "<group>";
|
@@ -172,6 +178,7 @@
|
|
172
178
|
isa = PBXHeadersBuildPhase;
|
173
179
|
buildActionMask = 2147483647;
|
174
180
|
files = (
|
181
|
+
155D8AFE19FED984004666BA /* Empty.h in Headers */,
|
175
182
|
155BBCA519E9CB6700BACB13 /* Branches.h in Headers */,
|
176
183
|
8C52AEF7195AAE32008A882A /* peekaview.h in Headers */,
|
177
184
|
);
|
@@ -259,6 +266,7 @@
|
|
259
266
|
buildActionMask = 2147483647;
|
260
267
|
files = (
|
261
268
|
8C9A203B195965F10013B6B3 /* fixtures.m in Sources */,
|
269
|
+
155D8AFF19FED984004666BA /* Empty.m in Sources */,
|
262
270
|
155BBCA619E9CB6700BACB13 /* Branches.m in Sources */,
|
263
271
|
8C52AEF8195AAE33008A882A /* peekaview.m in Sources */,
|
264
272
|
);
|
@@ -266,4 +266,68 @@ OBJC
|
|
266
266
|
end
|
267
267
|
end
|
268
268
|
|
269
|
+
describe "empty coverage data" do
|
270
|
+
|
271
|
+
let(:empty_file) do
|
272
|
+
fixtures_project.send(:coverage_files).detect { |cf| cf.source_file_pathname.basename.to_s == "Empty.m" }
|
273
|
+
end
|
274
|
+
|
275
|
+
describe "gcov_data" do
|
276
|
+
it "returns an empty string" do
|
277
|
+
gcov_data = empty_file.gcov_data
|
278
|
+
expect(gcov_data).to be_empty
|
279
|
+
end
|
280
|
+
end
|
281
|
+
|
282
|
+
describe "cleaned_gcov_data" do
|
283
|
+
it "returns an empty string" do
|
284
|
+
cleaned_gcov_data = empty_file.cleaned_gcov_data
|
285
|
+
expect(cleaned_gcov_data).to be_empty
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
289
|
+
describe "branch_coverage_data" do
|
290
|
+
it "returns an empty hash for branch_coverage_data of an empty file" do
|
291
|
+
data = empty_file.branch_coverage_data
|
292
|
+
expect(data).to be_empty
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
296
|
+
describe "num_branch_hits_for_statement_on_line" do
|
297
|
+
it "returns 0.0 when no data is available" do
|
298
|
+
expect(empty_file.num_branch_hits_for_statement_on_line(1)).to eq(0)
|
299
|
+
end
|
300
|
+
end
|
301
|
+
|
302
|
+
describe "rate_branch_coverage_for_statement_on_line" do
|
303
|
+
it "returns 0.0 when no data is available" do
|
304
|
+
expect(empty_file.rate_branch_coverage_for_statement_on_line(1)).to eq(0.0)
|
305
|
+
end
|
306
|
+
end
|
307
|
+
|
308
|
+
describe "percentage_branch_coverage_for_statement_on_line" do
|
309
|
+
it "returns 0 when no data is available" do
|
310
|
+
expect(empty_file.percentage_branch_coverage_for_statement_on_line(1)).to eq(0)
|
311
|
+
end
|
312
|
+
end
|
313
|
+
|
314
|
+
describe "num_branches_testable" do
|
315
|
+
it "returns 0 when no data is available" do
|
316
|
+
expect(empty_file.num_branches_testable).to eq(0)
|
317
|
+
end
|
318
|
+
end
|
319
|
+
|
320
|
+
describe "num_branches_tested" do
|
321
|
+
it "returns 0 when no data is available" do
|
322
|
+
expect(empty_file.num_branches_tested).to eq(0)
|
323
|
+
end
|
324
|
+
end
|
325
|
+
|
326
|
+
describe "rate_branches_tested" do
|
327
|
+
it "returns 0.0 when no data is available" do
|
328
|
+
expect(empty_file.rate_branches_tested).to eq(0.0)
|
329
|
+
end
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
269
333
|
end
|
@@ -27,7 +27,7 @@ describe Slather::CoverageService::Coveralls do
|
|
27
27
|
|
28
28
|
it "should return valid json for coveralls coverage data" do
|
29
29
|
fixtures_project.stub(:travis_job_id).and_return("9182")
|
30
|
-
expect(fixtures_project.send(:coveralls_coverage_data)).to eq("{\"service_job_id\":\"9182\",\"service_name\":\"travis-ci\",\"source_files\":[{\"name\":\"spec/fixtures/fixtures/more_files/Branches.m\",\"source\":\"//\\n// Branches.m\\n// fixtures\\n//\\n// Created by Julian Krumow on 11.10.14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import \\\"Branches.h\\\"\\n\\n@implementation Branches\\n\\n- (void)branches:(BOOL)goIf skipBranches:(BOOL)skipBranches\\n{\\n if (goIf) {\\n NSLog(@\\\"foo.\\\");\\n \\n if (!skipBranches) {\\n NSLog(@\\\"not skipped.\\\");\\n }\\n } else {\\n NSLog(@\\\"bar.\\\");\\n }\\n \\n int i = 5;\\n if (i == 5) {\\n return;\\n }\\n switch (i) {\\n case 0:\\n NSLog(@\\\"0\\\");\\n break;\\n \\n case 1:\\n NSLog(@\\\"1\\\");\\n break;\\n case 5:\\n NSLog(@\\\"5\\\");\\n break;\\n default:\\n break;\\n }\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,2,null,2,1,null,1,0,0,1,1,null,null,2,2,2,null,0,null,0,0,null,null,0,0,null,0,0,null,0,null,2,null,null]},{\"name\":\"spec/fixtures/fixtures/fixtures.m\",\"source\":\"//\\n// fixtures.m\\n// fixtures\\n//\\n// Created by Mark Larsen on 6/24/14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import \\\"fixtures.h\\\"\\n\\n@implementation fixtures\\n\\n- (void)testedMethod\\n{\\n NSLog(@\\\"tested\\\");\\n}\\n\\n- (void)untestedMethod\\n{\\n NSLog(@\\\"untested\\\");\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,1,1,null,null,null,0,0,null,null]},{\"name\":\"spec/fixtures/fixtures/more_files/peekaview.m\",\"source\":\"//\\n// peekaview.m\\n// fixtures\\n//\\n// Created by Mark Larsen on 6/25/14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import \\\"peekaview.h\\\"\\n\\n@implementation peekaview\\n\\n- (id)initWithFrame:(CGRect)frame\\n{\\n self = [super initWithFrame:frame];\\n if (self) {\\n // Initialization code\\n }\\n return self;\\n}\\n\\n/*\\n// Only override drawRect: if you perform custom drawing.\\n// An empty implementation adversely affects performance during animation.\\n- (void)drawRect:(CGRect)rect\\n{\\n // Drawing code\\n}\\n*/\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,0,null,0,0,null,0,0,0,null,null,null,null,null,null,null,null,null,null,null]},{\"name\":\"spec/fixtures/fixturesTests/BranchesTests.m\",\"source\":\"//\\n// BranchesTests.m\\n// fixtures\\n//\\n// Created by Julian Krumow on 11.10.14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import <XCTest/XCTest.h>\\n#import \\\"Branches.h\\\"\\n\\n@interface BranchesTests : XCTestCase\\n\\n@end\\n\\n@implementation BranchesTests\\n\\n- (void)setUp {\\n [super setUp];\\n // Put setup code here. This method is called before the invocation of each test method in the class.\\n}\\n\\n- (void)tearDown {\\n // Put teardown code here. This method is called after the invocation of each test method in the class.\\n [super tearDown];\\n}\\n\\n- (void)testBranchesNoBranches {\\n Branches *branches = [[Branches alloc] init];\\n [branches branches:NO skipBranches:NO];\\n}\\n\\n- (void)testBranchesFirstBranchAndSkip {\\n Branches *branches = [[Branches alloc] init];\\n [branches branches:YES skipBranches:YES];\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,2,null,2,null,null,null,2,2,null,null,1,1,1,null,null,1,1,1,null,null]},{\"name\":\"spec/fixtures/fixturesTests/fixturesTests.m\",\"source\":\"//\\n// fixturesTests.m\\n// fixturesTests\\n//\\n// Created by Mark Larsen on 6/24/14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import <XCTest/XCTest.h>\\n#import \\\"fixtures.h\\\"\\n\\n@interface fixturesTests : XCTestCase\\n\\n@end\\n\\n@implementation fixturesTests\\n\\n- (void)setUp\\n{\\n [super setUp];\\n // Put setup code here. This method is called before the invocation of each test method in the class.\\n}\\n\\n- (void)tearDown\\n{\\n // Put teardown code here. This method is called after the invocation of each test method in the class.\\n [super tearDown];\\n}\\n\\n- (void)testExample\\n{\\n fixtures *f = [[fixtures alloc] init];\\n [f testedMethod];\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1,null,1,null,null,null,null,1,1,null,null,null,1,1,1,null,null]},{\"name\":\"spec/fixtures/fixturesTests/peekaviewTests.m\",\"source\":\"//\\n// peekaviewTests.m\\n// fixtures\\n//\\n// Created by Mark Larsen on 6/25/14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import <XCTest/XCTest.h>\\n\\n@interface peekaviewTests : XCTestCase\\n\\n@end\\n\\n@implementation peekaviewTests\\n\\n- (void)setUp\\n{\\n [super setUp];\\n // Put setup code here. This method is called before the invocation of each test method in the class.\\n}\\n\\n- (void)tearDown\\n{\\n // Put teardown code here. This method is called after the invocation of each test method in the class.\\n [super tearDown];\\n}\\n\\n- (void)testExample\\n{\\n XCTAssert(YES, @\\\"woot\\\");\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1,null,1,null,null,null,null,1,1,null,null,null,2,1,null,null]}]}")
|
30
|
+
expect(fixtures_project.send(:coveralls_coverage_data)).to eq("{\"service_job_id\":\"9182\",\"service_name\":\"travis-ci\",\"source_files\":[{\"name\":\"spec/fixtures/fixtures/more_files/Branches.m\",\"source\":\"//\\n// Branches.m\\n// fixtures\\n//\\n// Created by Julian Krumow on 11.10.14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import \\\"Branches.h\\\"\\n\\n@implementation Branches\\n\\n- (void)branches:(BOOL)goIf skipBranches:(BOOL)skipBranches\\n{\\n if (goIf) {\\n NSLog(@\\\"foo.\\\");\\n \\n if (!skipBranches) {\\n NSLog(@\\\"not skipped.\\\");\\n }\\n } else {\\n NSLog(@\\\"bar.\\\");\\n }\\n \\n int i = 5;\\n if (i == 5) {\\n return;\\n }\\n switch (i) {\\n case 0:\\n NSLog(@\\\"0\\\");\\n break;\\n \\n case 1:\\n NSLog(@\\\"1\\\");\\n break;\\n case 5:\\n NSLog(@\\\"5\\\");\\n break;\\n default:\\n break;\\n }\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,2,null,2,1,null,1,0,0,1,1,null,null,2,2,2,null,0,null,0,0,null,null,0,0,null,0,0,null,0,null,2,null,null]},{\"name\":\"spec/fixtures/fixtures/more_files/Empty.m\",\"source\":\"//\\n// Empty.m\\n// fixtures\\n//\\n// Created by Julian Krumow on 27.10.14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import \\\"Empty.h\\\"\\n\\n@implementation Empty\\n\\n@end\\n\",\"coverage\":[]},{\"name\":\"spec/fixtures/fixtures/fixtures.m\",\"source\":\"//\\n// fixtures.m\\n// fixtures\\n//\\n// Created by Mark Larsen on 6/24/14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import \\\"fixtures.h\\\"\\n\\n@implementation fixtures\\n\\n- (void)testedMethod\\n{\\n NSLog(@\\\"tested\\\");\\n}\\n\\n- (void)untestedMethod\\n{\\n NSLog(@\\\"untested\\\");\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,1,1,null,null,null,0,0,null,null]},{\"name\":\"spec/fixtures/fixtures/more_files/peekaview.m\",\"source\":\"//\\n// peekaview.m\\n// fixtures\\n//\\n// Created by Mark Larsen on 6/25/14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import \\\"peekaview.h\\\"\\n\\n@implementation peekaview\\n\\n- (id)initWithFrame:(CGRect)frame\\n{\\n self = [super initWithFrame:frame];\\n if (self) {\\n // Initialization code\\n }\\n return self;\\n}\\n\\n/*\\n// Only override drawRect: if you perform custom drawing.\\n// An empty implementation adversely affects performance during animation.\\n- (void)drawRect:(CGRect)rect\\n{\\n // Drawing code\\n}\\n*/\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,0,null,0,0,null,0,0,0,null,null,null,null,null,null,null,null,null,null,null]},{\"name\":\"spec/fixtures/fixturesTests/BranchesTests.m\",\"source\":\"//\\n// BranchesTests.m\\n// fixtures\\n//\\n// Created by Julian Krumow on 11.10.14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import <XCTest/XCTest.h>\\n#import \\\"Branches.h\\\"\\n\\n@interface BranchesTests : XCTestCase\\n\\n@end\\n\\n@implementation BranchesTests\\n\\n- (void)setUp {\\n [super setUp];\\n // Put setup code here. This method is called before the invocation of each test method in the class.\\n}\\n\\n- (void)tearDown {\\n // Put teardown code here. This method is called after the invocation of each test method in the class.\\n [super tearDown];\\n}\\n\\n- (void)testBranchesNoBranches {\\n Branches *branches = [[Branches alloc] init];\\n [branches branches:NO skipBranches:NO];\\n}\\n\\n- (void)testBranchesFirstBranchAndSkip {\\n Branches *branches = [[Branches alloc] init];\\n [branches branches:YES skipBranches:YES];\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,2,null,2,null,null,null,2,2,null,null,1,1,1,null,null,1,1,1,null,null]},{\"name\":\"spec/fixtures/fixturesTests/fixturesTests.m\",\"source\":\"//\\n// fixturesTests.m\\n// fixturesTests\\n//\\n// Created by Mark Larsen on 6/24/14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import <XCTest/XCTest.h>\\n#import \\\"fixtures.h\\\"\\n\\n@interface fixturesTests : XCTestCase\\n\\n@end\\n\\n@implementation fixturesTests\\n\\n- (void)setUp\\n{\\n [super setUp];\\n // Put setup code here. This method is called before the invocation of each test method in the class.\\n}\\n\\n- (void)tearDown\\n{\\n // Put teardown code here. This method is called after the invocation of each test method in the class.\\n [super tearDown];\\n}\\n\\n- (void)testExample\\n{\\n fixtures *f = [[fixtures alloc] init];\\n [f testedMethod];\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1,null,1,null,null,null,null,1,1,null,null,null,1,1,1,null,null]},{\"name\":\"spec/fixtures/fixturesTests/peekaviewTests.m\",\"source\":\"//\\n// peekaviewTests.m\\n// fixtures\\n//\\n// Created by Mark Larsen on 6/25/14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import <XCTest/XCTest.h>\\n\\n@interface peekaviewTests : XCTestCase\\n\\n@end\\n\\n@implementation peekaviewTests\\n\\n- (void)setUp\\n{\\n [super setUp];\\n // Put setup code here. This method is called before the invocation of each test method in the class.\\n}\\n\\n- (void)tearDown\\n{\\n // Put teardown code here. This method is called after the invocation of each test method in the class.\\n [super tearDown];\\n}\\n\\n- (void)testExample\\n{\\n XCTAssert(YES, @\\\"woot\\\");\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1,null,1,null,null,null,null,1,1,null,null,null,2,1,null,null]}]}")
|
31
31
|
end
|
32
32
|
|
33
33
|
it "should raise an error if there is no TRAVIS_JOB_ID" do
|
@@ -47,7 +47,7 @@ describe Slather::CoverageService::Coveralls do
|
|
47
47
|
fixtures_project.stub(:travis_job_id).and_return("9182")
|
48
48
|
expect(fixtures_project).to receive(:`) do |cmd|
|
49
49
|
expect(cmd).to eq("curl -s --form json_file=@coveralls_json_file https://coveralls.io/api/v1/jobs")
|
50
|
-
expect(File.open('coveralls_json_file', 'r').read).to eq("{\"service_job_id\":\"9182\",\"service_name\":\"travis-ci\",\"source_files\":[{\"name\":\"spec/fixtures/fixtures/more_files/Branches.m\",\"source\":\"//\\n// Branches.m\\n// fixtures\\n//\\n// Created by Julian Krumow on 11.10.14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import \\\"Branches.h\\\"\\n\\n@implementation Branches\\n\\n- (void)branches:(BOOL)goIf skipBranches:(BOOL)skipBranches\\n{\\n if (goIf) {\\n NSLog(@\\\"foo.\\\");\\n \\n if (!skipBranches) {\\n NSLog(@\\\"not skipped.\\\");\\n }\\n } else {\\n NSLog(@\\\"bar.\\\");\\n }\\n \\n int i = 5;\\n if (i == 5) {\\n return;\\n }\\n switch (i) {\\n case 0:\\n NSLog(@\\\"0\\\");\\n break;\\n \\n case 1:\\n NSLog(@\\\"1\\\");\\n break;\\n case 5:\\n NSLog(@\\\"5\\\");\\n break;\\n default:\\n break;\\n }\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,2,null,2,1,null,1,0,0,1,1,null,null,2,2,2,null,0,null,0,0,null,null,0,0,null,0,0,null,0,null,2,null,null]},{\"name\":\"spec/fixtures/fixtures/fixtures.m\",\"source\":\"//\\n// fixtures.m\\n// fixtures\\n//\\n// Created by Mark Larsen on 6/24/14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import \\\"fixtures.h\\\"\\n\\n@implementation fixtures\\n\\n- (void)testedMethod\\n{\\n NSLog(@\\\"tested\\\");\\n}\\n\\n- (void)untestedMethod\\n{\\n NSLog(@\\\"untested\\\");\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,1,1,null,null,null,0,0,null,null]},{\"name\":\"spec/fixtures/fixtures/more_files/peekaview.m\",\"source\":\"//\\n// peekaview.m\\n// fixtures\\n//\\n// Created by Mark Larsen on 6/25/14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import \\\"peekaview.h\\\"\\n\\n@implementation peekaview\\n\\n- (id)initWithFrame:(CGRect)frame\\n{\\n self = [super initWithFrame:frame];\\n if (self) {\\n // Initialization code\\n }\\n return self;\\n}\\n\\n/*\\n// Only override drawRect: if you perform custom drawing.\\n// An empty implementation adversely affects performance during animation.\\n- (void)drawRect:(CGRect)rect\\n{\\n // Drawing code\\n}\\n*/\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,0,null,0,0,null,0,0,0,null,null,null,null,null,null,null,null,null,null,null]},{\"name\":\"spec/fixtures/fixturesTests/BranchesTests.m\",\"source\":\"//\\n// BranchesTests.m\\n// fixtures\\n//\\n// Created by Julian Krumow on 11.10.14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import <XCTest/XCTest.h>\\n#import \\\"Branches.h\\\"\\n\\n@interface BranchesTests : XCTestCase\\n\\n@end\\n\\n@implementation BranchesTests\\n\\n- (void)setUp {\\n [super setUp];\\n // Put setup code here. This method is called before the invocation of each test method in the class.\\n}\\n\\n- (void)tearDown {\\n // Put teardown code here. This method is called after the invocation of each test method in the class.\\n [super tearDown];\\n}\\n\\n- (void)testBranchesNoBranches {\\n Branches *branches = [[Branches alloc] init];\\n [branches branches:NO skipBranches:NO];\\n}\\n\\n- (void)testBranchesFirstBranchAndSkip {\\n Branches *branches = [[Branches alloc] init];\\n [branches branches:YES skipBranches:YES];\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,2,null,2,null,null,null,2,2,null,null,1,1,1,null,null,1,1,1,null,null]},{\"name\":\"spec/fixtures/fixturesTests/fixturesTests.m\",\"source\":\"//\\n// fixturesTests.m\\n// fixturesTests\\n//\\n// Created by Mark Larsen on 6/24/14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import <XCTest/XCTest.h>\\n#import \\\"fixtures.h\\\"\\n\\n@interface fixturesTests : XCTestCase\\n\\n@end\\n\\n@implementation fixturesTests\\n\\n- (void)setUp\\n{\\n [super setUp];\\n // Put setup code here. This method is called before the invocation of each test method in the class.\\n}\\n\\n- (void)tearDown\\n{\\n // Put teardown code here. This method is called after the invocation of each test method in the class.\\n [super tearDown];\\n}\\n\\n- (void)testExample\\n{\\n fixtures *f = [[fixtures alloc] init];\\n [f testedMethod];\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1,null,1,null,null,null,null,1,1,null,null,null,1,1,1,null,null]},{\"name\":\"spec/fixtures/fixturesTests/peekaviewTests.m\",\"source\":\"//\\n// peekaviewTests.m\\n// fixtures\\n//\\n// Created by Mark Larsen on 6/25/14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import <XCTest/XCTest.h>\\n\\n@interface peekaviewTests : XCTestCase\\n\\n@end\\n\\n@implementation peekaviewTests\\n\\n- (void)setUp\\n{\\n [super setUp];\\n // Put setup code here. This method is called before the invocation of each test method in the class.\\n}\\n\\n- (void)tearDown\\n{\\n // Put teardown code here. This method is called after the invocation of each test method in the class.\\n [super tearDown];\\n}\\n\\n- (void)testExample\\n{\\n XCTAssert(YES, @\\\"woot\\\");\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1,null,1,null,null,null,null,1,1,null,null,null,2,1,null,null]}]}")
|
50
|
+
expect(File.open('coveralls_json_file', 'r').read).to eq("{\"service_job_id\":\"9182\",\"service_name\":\"travis-ci\",\"source_files\":[{\"name\":\"spec/fixtures/fixtures/more_files/Branches.m\",\"source\":\"//\\n// Branches.m\\n// fixtures\\n//\\n// Created by Julian Krumow on 11.10.14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import \\\"Branches.h\\\"\\n\\n@implementation Branches\\n\\n- (void)branches:(BOOL)goIf skipBranches:(BOOL)skipBranches\\n{\\n if (goIf) {\\n NSLog(@\\\"foo.\\\");\\n \\n if (!skipBranches) {\\n NSLog(@\\\"not skipped.\\\");\\n }\\n } else {\\n NSLog(@\\\"bar.\\\");\\n }\\n \\n int i = 5;\\n if (i == 5) {\\n return;\\n }\\n switch (i) {\\n case 0:\\n NSLog(@\\\"0\\\");\\n break;\\n \\n case 1:\\n NSLog(@\\\"1\\\");\\n break;\\n case 5:\\n NSLog(@\\\"5\\\");\\n break;\\n default:\\n break;\\n }\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,2,null,2,1,null,1,0,0,1,1,null,null,2,2,2,null,0,null,0,0,null,null,0,0,null,0,0,null,0,null,2,null,null]},{\"name\":\"spec/fixtures/fixtures/more_files/Empty.m\",\"source\":\"//\\n// Empty.m\\n// fixtures\\n//\\n// Created by Julian Krumow on 27.10.14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import \\\"Empty.h\\\"\\n\\n@implementation Empty\\n\\n@end\\n\",\"coverage\":[]},{\"name\":\"spec/fixtures/fixtures/fixtures.m\",\"source\":\"//\\n// fixtures.m\\n// fixtures\\n//\\n// Created by Mark Larsen on 6/24/14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import \\\"fixtures.h\\\"\\n\\n@implementation fixtures\\n\\n- (void)testedMethod\\n{\\n NSLog(@\\\"tested\\\");\\n}\\n\\n- (void)untestedMethod\\n{\\n NSLog(@\\\"untested\\\");\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,1,1,null,null,null,0,0,null,null]},{\"name\":\"spec/fixtures/fixtures/more_files/peekaview.m\",\"source\":\"//\\n// peekaview.m\\n// fixtures\\n//\\n// Created by Mark Larsen on 6/25/14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import \\\"peekaview.h\\\"\\n\\n@implementation peekaview\\n\\n- (id)initWithFrame:(CGRect)frame\\n{\\n self = [super initWithFrame:frame];\\n if (self) {\\n // Initialization code\\n }\\n return self;\\n}\\n\\n/*\\n// Only override drawRect: if you perform custom drawing.\\n// An empty implementation adversely affects performance during animation.\\n- (void)drawRect:(CGRect)rect\\n{\\n // Drawing code\\n}\\n*/\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,0,null,0,0,null,0,0,0,null,null,null,null,null,null,null,null,null,null,null]},{\"name\":\"spec/fixtures/fixturesTests/BranchesTests.m\",\"source\":\"//\\n// BranchesTests.m\\n// fixtures\\n//\\n// Created by Julian Krumow on 11.10.14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import <XCTest/XCTest.h>\\n#import \\\"Branches.h\\\"\\n\\n@interface BranchesTests : XCTestCase\\n\\n@end\\n\\n@implementation BranchesTests\\n\\n- (void)setUp {\\n [super setUp];\\n // Put setup code here. This method is called before the invocation of each test method in the class.\\n}\\n\\n- (void)tearDown {\\n // Put teardown code here. This method is called after the invocation of each test method in the class.\\n [super tearDown];\\n}\\n\\n- (void)testBranchesNoBranches {\\n Branches *branches = [[Branches alloc] init];\\n [branches branches:NO skipBranches:NO];\\n}\\n\\n- (void)testBranchesFirstBranchAndSkip {\\n Branches *branches = [[Branches alloc] init];\\n [branches branches:YES skipBranches:YES];\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,2,null,2,null,null,null,2,2,null,null,1,1,1,null,null,1,1,1,null,null]},{\"name\":\"spec/fixtures/fixturesTests/fixturesTests.m\",\"source\":\"//\\n// fixturesTests.m\\n// fixturesTests\\n//\\n// Created by Mark Larsen on 6/24/14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import <XCTest/XCTest.h>\\n#import \\\"fixtures.h\\\"\\n\\n@interface fixturesTests : XCTestCase\\n\\n@end\\n\\n@implementation fixturesTests\\n\\n- (void)setUp\\n{\\n [super setUp];\\n // Put setup code here. This method is called before the invocation of each test method in the class.\\n}\\n\\n- (void)tearDown\\n{\\n // Put teardown code here. This method is called after the invocation of each test method in the class.\\n [super tearDown];\\n}\\n\\n- (void)testExample\\n{\\n fixtures *f = [[fixtures alloc] init];\\n [f testedMethod];\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1,null,1,null,null,null,null,1,1,null,null,null,1,1,1,null,null]},{\"name\":\"spec/fixtures/fixturesTests/peekaviewTests.m\",\"source\":\"//\\n// peekaviewTests.m\\n// fixtures\\n//\\n// Created by Mark Larsen on 6/25/14.\\n// Copyright (c) 2014 marklarr. All rights reserved.\\n//\\n\\n#import <XCTest/XCTest.h>\\n\\n@interface peekaviewTests : XCTestCase\\n\\n@end\\n\\n@implementation peekaviewTests\\n\\n- (void)setUp\\n{\\n [super setUp];\\n // Put setup code here. This method is called before the invocation of each test method in the class.\\n}\\n\\n- (void)tearDown\\n{\\n // Put teardown code here. This method is called after the invocation of each test method in the class.\\n [super tearDown];\\n}\\n\\n- (void)testExample\\n{\\n XCTAssert(YES, @\\\"woot\\\");\\n}\\n\\n@end\\n\",\"coverage\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1,null,1,null,null,null,null,1,1,null,null,null,2,1,null,null]}]}")
|
51
51
|
end.once
|
52
52
|
fixtures_project.post
|
53
53
|
end
|
@@ -18,6 +18,7 @@ describe Slather::CoverageService::SimpleOutput do
|
|
18
18
|
expect(fixtures_project).to receive(:puts).with("spec/fixtures/fixtures/fixtures.m: 2 of 4 lines (50.00%)")
|
19
19
|
expect(fixtures_project).to receive(:puts).with("spec/fixtures/fixtures/more_files/peekaview.m: 0 of 6 lines (0.00%)")
|
20
20
|
expect(fixtures_project).to receive(:puts).with("spec/fixtures/fixtures/more_files/Branches.m: 10 of 20 lines (50.00%)")
|
21
|
+
expect(fixtures_project).to receive(:puts).with("spec/fixtures/fixtures/more_files/Empty.m: 0 of 0 lines (0.00%)")
|
21
22
|
expect(fixtures_project).to receive(:puts).with("spec/fixtures/fixturesTests/fixturesTests.m: 7 of 7 lines (100.00%)")
|
22
23
|
expect(fixtures_project).to receive(:puts).with("spec/fixtures/fixturesTests/peekaviewTests.m: 6 of 6 lines (100.00%)")
|
23
24
|
expect(fixtures_project).to receive(:puts).with("spec/fixtures/fixturesTests/BranchesTests.m: 10 of 10 lines (100.00%)")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slather
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Larsen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -147,6 +147,7 @@ files:
|
|
147
147
|
- ".coveralls.yml"
|
148
148
|
- ".gitignore"
|
149
149
|
- ".travis.yml"
|
150
|
+
- CHANGELOG.md
|
150
151
|
- Gemfile
|
151
152
|
- LICENSE.txt
|
152
153
|
- README.md
|
@@ -173,6 +174,8 @@ files:
|
|
173
174
|
- spec/fixtures/fixtures/fixtures.m
|
174
175
|
- spec/fixtures/fixtures/more_files/Branches.h
|
175
176
|
- spec/fixtures/fixtures/more_files/Branches.m
|
177
|
+
- spec/fixtures/fixtures/more_files/Empty.h
|
178
|
+
- spec/fixtures/fixtures/more_files/Empty.m
|
176
179
|
- spec/fixtures/fixtures/more_files/peekaview.h
|
177
180
|
- spec/fixtures/fixtures/more_files/peekaview.m
|
178
181
|
- spec/fixtures/fixturesTests/BranchesTests.m
|
@@ -224,6 +227,8 @@ test_files:
|
|
224
227
|
- spec/fixtures/fixtures/fixtures.m
|
225
228
|
- spec/fixtures/fixtures/more_files/Branches.h
|
226
229
|
- spec/fixtures/fixtures/more_files/Branches.m
|
230
|
+
- spec/fixtures/fixtures/more_files/Empty.h
|
231
|
+
- spec/fixtures/fixtures/more_files/Empty.m
|
227
232
|
- spec/fixtures/fixtures/more_files/peekaview.h
|
228
233
|
- spec/fixtures/fixtures/more_files/peekaview.m
|
229
234
|
- spec/fixtures/fixturesTests/BranchesTests.m
|