slather 1.5.0 → 1.5.1
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.
- 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
|