slather 2.4.3 → 2.4.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/lib/slather.rb +1 -0
- data/lib/slather/command/coverage_command.rb +3 -0
- data/lib/slather/coverage_service/llvm_cov_output.rb +35 -0
- data/lib/slather/project.rb +3 -0
- data/lib/slather/version.rb +1 -1
- data/spec/fixtures/report.llcov +216 -0
- data/spec/slather/coverage_service/llvm_cov_spec.rb +46 -0
- data/spec/spec_helper.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: f140d82b4571c441455df1b9eb9c247f8f52e310
|
4
|
+
data.tar.gz: eeaac677b8b341cb92479c16cbdd2bd6254c85de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebac089dfe9785ab980a86d6f3020a9c700f01edd1d3dcdb170c82faccc553cb5a4d7143a30c6432af7c606de9902fd42737f12233d136240aeb01e0ce415a21
|
7
|
+
data.tar.gz: e3a00efe762b6062a33ef42d30cbdadc4b03444f3f36538bc23b98988659587aace4a6d9fa346ab8a7d5367072fded337dd600efff2e28d5181fd98b366ff10c
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## v2.4.4
|
4
|
+
|
5
|
+
* Added llvm-cov output format
|
6
|
+
[lampietti](https://github.com/sgtsquiggs) [#354](https://github.com/SlatherOrg/slather/pull/354)
|
7
|
+
|
8
|
+
* Exclude swiftmodule from product search
|
9
|
+
[lampietti](https://github.com/lampietti) [#352](https://github.com/SlatherOrg/slather/pull/352)
|
10
|
+
|
3
11
|
## v2.4.3
|
4
12
|
|
5
13
|
* Initial Xcode 9 support
|
data/lib/slather.rb
CHANGED
@@ -11,6 +11,7 @@ require 'slather/coverage_service/gutter_json_output'
|
|
11
11
|
require 'slather/coverage_service/simple_output'
|
12
12
|
require 'slather/coverage_service/html_output'
|
13
13
|
require 'slather/coverage_service/json_output'
|
14
|
+
require 'slather/coverage_service/llvm_cov_output'
|
14
15
|
require 'cfpropertylist'
|
15
16
|
|
16
17
|
module Slather
|
@@ -13,6 +13,7 @@ class CoverageCommand < Clamp::Command
|
|
13
13
|
option ["--simple-output", "-s"], :flag, "Output coverage results to the terminal"
|
14
14
|
option ["--gutter-json", "-g"], :flag, "Output coverage results as Gutter JSON format"
|
15
15
|
option ["--cobertura-xml", "-x"], :flag, "Output coverage results as Cobertura XML format"
|
16
|
+
option ["--llvm-cov", "-r"], :flag, "Output coverage as llvm-cov format"
|
16
17
|
option ["--json"], :flag, "Output coverage results as simple JSON"
|
17
18
|
option ["--html"], :flag, "Output coverage results as static html pages"
|
18
19
|
option ["--show"], :flag, "Indicate that the static html pages will open automatically"
|
@@ -114,6 +115,8 @@ class CoverageCommand < Clamp::Command
|
|
114
115
|
project.coverage_service = :gutter_json
|
115
116
|
elsif cobertura_xml?
|
116
117
|
project.coverage_service = :cobertura_xml
|
118
|
+
elsif llvm_cov?
|
119
|
+
project.coverage_service = :llvm_cov
|
117
120
|
elsif html?
|
118
121
|
project.coverage_service = :html
|
119
122
|
project.show_html = show?
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
require 'date'
|
3
|
+
|
4
|
+
module Slather
|
5
|
+
module CoverageService
|
6
|
+
module LlvmCovOutput
|
7
|
+
|
8
|
+
def coverage_file_class
|
9
|
+
if input_format == "profdata"
|
10
|
+
Slather::ProfdataCoverageFile
|
11
|
+
else
|
12
|
+
raise StandardError, "Only profdata input format supported by llvm-cov show."
|
13
|
+
end
|
14
|
+
end
|
15
|
+
private :coverage_file_class
|
16
|
+
|
17
|
+
def post
|
18
|
+
report = coverage_files.map do |file|
|
19
|
+
["#{file.source_file_pathname.realpath}:", file.source_data, ""]
|
20
|
+
end.flatten.join("\n")
|
21
|
+
|
22
|
+
store_report(report)
|
23
|
+
end
|
24
|
+
|
25
|
+
def store_report(report)
|
26
|
+
output_file = 'report.llcov'
|
27
|
+
if output_directory
|
28
|
+
FileUtils.mkdir_p(output_directory)
|
29
|
+
output_file = File.join(output_directory, output_file)
|
30
|
+
end
|
31
|
+
File.write(output_file, report.to_s)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/slather/project.rb
CHANGED
@@ -352,6 +352,8 @@ module Slather
|
|
352
352
|
extend(Slather::CoverageService::GutterJsonOutput)
|
353
353
|
when :cobertura_xml
|
354
354
|
extend(Slather::CoverageService::CoberturaXmlOutput)
|
355
|
+
when :llvm_cov
|
356
|
+
extend(Slather::CoverageService::LlvmCovOutput)
|
355
357
|
when :html
|
356
358
|
extend(Slather::CoverageService::HtmlOutput)
|
357
359
|
when :json
|
@@ -435,6 +437,7 @@ module Slather
|
|
435
437
|
File.basename(x, File.extname(x)) <=> File.basename(y, File.extname(y))
|
436
438
|
}.reject { |path|
|
437
439
|
path.end_with? ".dSYM"
|
440
|
+
path.end_with? ".swiftmodule"
|
438
441
|
}.first
|
439
442
|
|
440
443
|
if found_product and File.directory? found_product
|
data/lib/slather/version.rb
CHANGED
@@ -0,0 +1,216 @@
|
|
1
|
+
/Users/mcrenshaw/Projects/slather/spec/fixtures/fixtures/fixtures.m:
|
2
|
+
1| |//
|
3
|
+
2| |// fixtures.m
|
4
|
+
3| |// fixtures
|
5
|
+
4| |//
|
6
|
+
5| |// Created by Mark Larsen on 6/24/14.
|
7
|
+
6| |// Copyright (c) 2014 marklarr 🌟. All rights reserved.
|
8
|
+
7| |//
|
9
|
+
8| |
|
10
|
+
9| |#import "fixtures.h"
|
11
|
+
10| |
|
12
|
+
11| |@implementation fixtures
|
13
|
+
12| |
|
14
|
+
13| |- (void)testedMethod
|
15
|
+
14| 1|{
|
16
|
+
15| 1| NSLog(@"tested");
|
17
|
+
16| 1|}
|
18
|
+
17| |
|
19
|
+
18| |- (void)untestedMethod
|
20
|
+
19| 0|{
|
21
|
+
20| 0| NSLog(@"untested");
|
22
|
+
21| 0|}
|
23
|
+
22| |
|
24
|
+
23| |@end
|
25
|
+
|
26
|
+
/Users/mcrenshaw/Projects/slather/spec/fixtures/fixtures/more_files/Branches.m:
|
27
|
+
1| |//
|
28
|
+
2| |// Branches.m
|
29
|
+
3| |// fixtures
|
30
|
+
4| |//
|
31
|
+
5| |// Created by Julian Krumow on 11.10.14.
|
32
|
+
6| |// Copyright (c) 2014 marklarr. All rights reserved.
|
33
|
+
7| |//
|
34
|
+
8| |
|
35
|
+
9| |#import "Branches.h"
|
36
|
+
10| |
|
37
|
+
11| |@implementation Branches
|
38
|
+
12| |
|
39
|
+
13| |- (void)branches:(BOOL)goIf skipBranches:(BOOL)skipBranches
|
40
|
+
14| 2|{
|
41
|
+
15| 2| if (goIf) {
|
42
|
+
16| 1| NSLog(@"foo.");
|
43
|
+
17| 1|
|
44
|
+
18| 1| if (!skipBranches) {
|
45
|
+
19| 0| NSLog(@"not skipped.");
|
46
|
+
20| 0| }
|
47
|
+
21| 1| } else {
|
48
|
+
22| 1| NSLog(@"bar.");
|
49
|
+
23| 1| }
|
50
|
+
24| 2|
|
51
|
+
25| 2| int i = 5;
|
52
|
+
26| 2| if (i == 5) {
|
53
|
+
27| 2| return;
|
54
|
+
28| 2| }
|
55
|
+
29| 0| switch (i) {
|
56
|
+
30| 0| case 0:
|
57
|
+
31| 0| NSLog(@"0");
|
58
|
+
32| 0| break;
|
59
|
+
33| 0|
|
60
|
+
34| 0| case 1:
|
61
|
+
35| 0| NSLog(@"1");
|
62
|
+
36| 0| break;
|
63
|
+
37| 0| case 5:
|
64
|
+
38| 0| NSLog(@"5");
|
65
|
+
39| 0| break;
|
66
|
+
40| 0| default:
|
67
|
+
41| 0| break;
|
68
|
+
42| 0| }
|
69
|
+
43| 0|}
|
70
|
+
44| |
|
71
|
+
45| |@end
|
72
|
+
|
73
|
+
/Users/mcrenshaw/Projects/slather/spec/fixtures/fixturesTests/BranchesTests.m:
|
74
|
+
1| |//
|
75
|
+
2| |// BranchesTests.m
|
76
|
+
3| |// fixtures
|
77
|
+
4| |//
|
78
|
+
5| |// Created by Julian Krumow on 11.10.14.
|
79
|
+
6| |// Copyright (c) 2014 marklarr. All rights reserved.
|
80
|
+
7| |//
|
81
|
+
8| |
|
82
|
+
9| |#import <XCTest/XCTest.h>
|
83
|
+
10| |#import "Branches.h"
|
84
|
+
11| |
|
85
|
+
12| |@interface BranchesTests : XCTestCase
|
86
|
+
13| |
|
87
|
+
14| |@end
|
88
|
+
15| |
|
89
|
+
16| |@implementation BranchesTests
|
90
|
+
17| |
|
91
|
+
18| 2|- (void)setUp {
|
92
|
+
19| 2| [super setUp];
|
93
|
+
20| 2| // Put setup code here. This method is called before the invocation of each test method in the class.
|
94
|
+
21| 2|}
|
95
|
+
22| |
|
96
|
+
23| 2|- (void)tearDown {
|
97
|
+
24| 2| // Put teardown code here. This method is called after the invocation of each test method in the class.
|
98
|
+
25| 2| [super tearDown];
|
99
|
+
26| 2|}
|
100
|
+
27| |
|
101
|
+
28| 1|- (void)testBranchesNoBranches {
|
102
|
+
29| 1| Branches *branches = [[Branches alloc] init];
|
103
|
+
30| 1| [branches branches:NO skipBranches:NO];
|
104
|
+
31| 1|}
|
105
|
+
32| |
|
106
|
+
33| 1|- (void)testBranchesFirstBranchAndSkip {
|
107
|
+
34| 1| Branches *branches = [[Branches alloc] init];
|
108
|
+
35| 1| [branches branches:YES skipBranches:YES];
|
109
|
+
36| 1|}
|
110
|
+
37| |
|
111
|
+
38| |@end
|
112
|
+
|
113
|
+
/Users/mcrenshaw/Projects/slather/spec/fixtures/fixturesTests/fixturesTests.m:
|
114
|
+
1| |//
|
115
|
+
2| |// fixturesTests.m
|
116
|
+
3| |// fixturesTests
|
117
|
+
4| |//
|
118
|
+
5| |// Created by Mark Larsen on 6/24/14.
|
119
|
+
6| |// Copyright (c) 2014 marklarr. All rights reserved.
|
120
|
+
7| |//
|
121
|
+
8| |
|
122
|
+
9| |#import <XCTest/XCTest.h>
|
123
|
+
10| |#import "fixtures.h"
|
124
|
+
11| |#import "fixturesTwo.h"
|
125
|
+
12| |
|
126
|
+
13| |@interface fixturesTests : XCTestCase
|
127
|
+
14| |
|
128
|
+
15| |@end
|
129
|
+
16| |
|
130
|
+
17| |@implementation fixturesTests
|
131
|
+
18| |
|
132
|
+
19| |- (void)setUp
|
133
|
+
20| 2|{
|
134
|
+
21| 2| [super setUp];
|
135
|
+
22| 2| // Put setup code here. This method is called before the invocation of each test method in the class.
|
136
|
+
23| 2|}
|
137
|
+
24| |
|
138
|
+
25| |- (void)tearDown
|
139
|
+
26| 2|{
|
140
|
+
27| 2| // Put teardown code here. This method is called after the invocation of each test method in the class.
|
141
|
+
28| 2| [super tearDown];
|
142
|
+
29| 2|}
|
143
|
+
30| |
|
144
|
+
31| |- (void)testExample
|
145
|
+
32| 1|{
|
146
|
+
33| 1| fixtures *f = [[fixtures alloc] init];
|
147
|
+
34| 1| [f testedMethod];
|
148
|
+
35| 1|}
|
149
|
+
36| |
|
150
|
+
37| |- (void)testFixturesTwo
|
151
|
+
38| 1|{
|
152
|
+
39| 1| fixturesTwo *f2 = [[fixturesTwo alloc] init];
|
153
|
+
40| 1|
|
154
|
+
41| 1| XCTAssertEqual([f2 doSomething], 11);
|
155
|
+
42| 1|}
|
156
|
+
43| |
|
157
|
+
44| |@end
|
158
|
+
|
159
|
+
/Users/mcrenshaw/Projects/slather/spec/fixtures/fixturesTests/peekaviewTests💣.m:
|
160
|
+
1| |//
|
161
|
+
2| |// peekaviewTests💣.m
|
162
|
+
3| |// fixtures
|
163
|
+
4| |//
|
164
|
+
5| |// Created by Mark Larsen on 6/25/14.
|
165
|
+
6| |// Copyright (c) 2014 marklarr. All rights reserved.
|
166
|
+
7| |//
|
167
|
+
8| |
|
168
|
+
9| |#import <XCTest/XCTest.h>
|
169
|
+
10| |
|
170
|
+
11| |@interface peekaviewTests : XCTestCase
|
171
|
+
12| |
|
172
|
+
13| |@end
|
173
|
+
14| |
|
174
|
+
15| |@implementation peekaviewTests
|
175
|
+
16| |
|
176
|
+
17| |- (void)setUp
|
177
|
+
18| 1|{
|
178
|
+
19| 1| [super setUp];
|
179
|
+
20| 1| // Put setup code here. This method is called before the invocation of each test method in the class.
|
180
|
+
21| 1|}
|
181
|
+
22| |
|
182
|
+
23| |- (void)tearDown
|
183
|
+
24| 1|{
|
184
|
+
25| 1| // Put teardown code here. This method is called after the invocation of each test method in the class.
|
185
|
+
26| 1| [super tearDown];
|
186
|
+
27| 1|}
|
187
|
+
28| |
|
188
|
+
29| |- (void)testExample
|
189
|
+
30| 1|{
|
190
|
+
31| 1| XCTAssert(YES, @"woot");
|
191
|
+
32| 1|}
|
192
|
+
33| |
|
193
|
+
34| |@end
|
194
|
+
|
195
|
+
/Users/mcrenshaw/Projects/slather/spec/fixtures/fixturesTwo/fixturesTwo.m:
|
196
|
+
1| |//
|
197
|
+
2| |// fixturesTwo.m
|
198
|
+
3| |// fixturesTwo
|
199
|
+
4| |//
|
200
|
+
5| |// Created by Kent Sutherland on 4/17/16.
|
201
|
+
6| |// Copyright © 2016 marklarr. All rights reserved.
|
202
|
+
7| |//
|
203
|
+
8| |
|
204
|
+
9| |#import "fixturesTwo.h"
|
205
|
+
10| |
|
206
|
+
11| |@implementation fixturesTwo
|
207
|
+
12| |
|
208
|
+
13| |- (NSInteger)doSomething
|
209
|
+
14| 1|{
|
210
|
+
15| 1| NSInteger a = 5;
|
211
|
+
16| 1| NSInteger b = 6;
|
212
|
+
17| 1|
|
213
|
+
18| 1| return a + b;
|
214
|
+
19| 1|}
|
215
|
+
20| |
|
216
|
+
21| |@end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
|
2
|
+
|
3
|
+
describe Slather::CoverageService::LlvmCovOutput do
|
4
|
+
|
5
|
+
let(:fixtures_project) do
|
6
|
+
proj = Slather::Project.open(FIXTURES_PROJECT_PATH)
|
7
|
+
proj.build_directory = TEMP_DERIVED_DATA_PATH
|
8
|
+
proj.binary_basename = ["fixturesTests", "libfixturesTwo"]
|
9
|
+
proj.input_format = "profdata"
|
10
|
+
proj.coverage_service = "llvm_cov"
|
11
|
+
proj.configure
|
12
|
+
proj
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#coverage_file_class' do
|
16
|
+
it "should return ProfdataCoverageFile" do
|
17
|
+
expect(fixtures_project.send(:coverage_file_class)).to eq(Slather::ProfdataCoverageFile)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '#post' do
|
22
|
+
it "should create an llvm-cov report spanning all coverage files" do
|
23
|
+
fixtures_project.post
|
24
|
+
|
25
|
+
output_llcov = File.read('report.llcov')
|
26
|
+
fixture_llcov = File.read(FIXTURES_LLCOV_PATH)
|
27
|
+
|
28
|
+
output_llcov, fixture_llcov = [output_llcov, fixture_llcov].map do |llcov_doc|
|
29
|
+
llcov_doc.gsub(/^\/.+:$/, '')
|
30
|
+
end
|
31
|
+
|
32
|
+
expect(output_llcov).to eq(fixture_llcov)
|
33
|
+
FileUtils.rm('report.llcov')
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should create an llvm-cov report in the given output directory" do
|
37
|
+
fixtures_project.output_directory = "./output"
|
38
|
+
fixtures_project.post
|
39
|
+
|
40
|
+
filepath = "#{fixtures_project.output_directory}/report.llcov"
|
41
|
+
expect(File.exists?(filepath)).to be_truthy
|
42
|
+
|
43
|
+
FileUtils.rm_rf(fixtures_project.output_directory)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -14,6 +14,7 @@ require 'equivalent-xml'
|
|
14
14
|
|
15
15
|
FIXTURES_XML_PATH = File.join(File.dirname(__FILE__), 'fixtures/cobertura.xml')
|
16
16
|
FIXTURES_JSON_PATH = File.join(File.dirname(__FILE__), 'fixtures/report.json')
|
17
|
+
FIXTURES_LLCOV_PATH = File.join(File.dirname(__FILE__), 'fixtures/report.llcov')
|
17
18
|
FIXTURES_GUTTER_JSON_PATH = File.join(File.dirname(__FILE__), 'fixtures/gutter.json')
|
18
19
|
FIXTURES_HTML_FOLDER_PATH = File.join(File.dirname(__FILE__), 'fixtures/fixtures_html')
|
19
20
|
FIXTURES_PROJECT_PATH = File.join(File.dirname(__FILE__), 'fixtures/fixtures.xcodeproj')
|
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: 2.4.
|
4
|
+
version: 2.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Larsen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -253,6 +253,7 @@ files:
|
|
253
253
|
- lib/slather/coverage_service/hardcover.rb
|
254
254
|
- lib/slather/coverage_service/html_output.rb
|
255
255
|
- lib/slather/coverage_service/json_output.rb
|
256
|
+
- lib/slather/coverage_service/llvm_cov_output.rb
|
256
257
|
- lib/slather/coverage_service/simple_output.rb
|
257
258
|
- lib/slather/coveralls_coverage.rb
|
258
259
|
- lib/slather/profdata_coverage_file.rb
|
@@ -302,6 +303,7 @@ files:
|
|
302
303
|
- "spec/fixtures/fixtures_html/peekaviewTests\U0001F4A3.m.html"
|
303
304
|
- spec/fixtures/gutter.json
|
304
305
|
- spec/fixtures/report.json
|
306
|
+
- spec/fixtures/report.llcov
|
305
307
|
- spec/slather/cocoapods_plugin_spec.rb
|
306
308
|
- spec/slather/coverage_file_spec.rb
|
307
309
|
- spec/slather/coverage_service/cobertura_xml_spec.rb
|
@@ -310,6 +312,7 @@ files:
|
|
310
312
|
- spec/slather/coverage_service/hardcover_spec.rb
|
311
313
|
- spec/slather/coverage_service/html_output_spec.rb
|
312
314
|
- spec/slather/coverage_service/json_spec.rb
|
315
|
+
- spec/slather/coverage_service/llvm_cov_spec.rb
|
313
316
|
- spec/slather/coverage_service/simple_output_spec.rb
|
314
317
|
- spec/slather/fixtures.gcno
|
315
318
|
- spec/slather/profdata_coverage_spec.rb
|
@@ -383,6 +386,7 @@ test_files:
|
|
383
386
|
- "spec/fixtures/fixtures_html/peekaviewTests\U0001F4A3.m.html"
|
384
387
|
- spec/fixtures/gutter.json
|
385
388
|
- spec/fixtures/report.json
|
389
|
+
- spec/fixtures/report.llcov
|
386
390
|
- spec/slather/cocoapods_plugin_spec.rb
|
387
391
|
- spec/slather/coverage_file_spec.rb
|
388
392
|
- spec/slather/coverage_service/cobertura_xml_spec.rb
|
@@ -391,6 +395,7 @@ test_files:
|
|
391
395
|
- spec/slather/coverage_service/hardcover_spec.rb
|
392
396
|
- spec/slather/coverage_service/html_output_spec.rb
|
393
397
|
- spec/slather/coverage_service/json_spec.rb
|
398
|
+
- spec/slather/coverage_service/llvm_cov_spec.rb
|
394
399
|
- spec/slather/coverage_service/simple_output_spec.rb
|
395
400
|
- spec/slather/fixtures.gcno
|
396
401
|
- spec/slather/profdata_coverage_spec.rb
|