slather 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/.travis.yml +2 -2
- data/README.md +37 -5
- data/Rakefile +12 -0
- data/lib/slather/coverage_file.rb +21 -1
- data/lib/slather/coverage_service/coveralls.rb +15 -6
- data/lib/slather/coverage_service/simple_output.rb +5 -6
- data/lib/slather/coveralls_coverage_file.rb +1 -9
- data/lib/slather/project.rb +12 -2
- data/lib/slather/version.rb +1 -1
- data/spec/fixtures/fixtures.xcodeproj/project.pbxproj +905 -452
- data/spec/slather/coverage_file_spec.rb +31 -1
- data/spec/slather/coverage_service/coveralls_spec.rb +15 -0
- data/spec/slather/coverage_service/simple_output_spec.rb +3 -3
- data/spec/slather/project_spec.rb +50 -3
- data/spec/slather/slather_spec.rb +19 -0
- metadata +4 -3
- data/scripts/travis.sh +0 -2
@@ -22,6 +22,18 @@ describe Slather::CoverageFile do
|
|
22
22
|
expect(coverage_file.source_file_pathname).to eq(fixtures_project["fixtures/fixtures.m"].real_path)
|
23
23
|
end
|
24
24
|
|
25
|
+
it "should look in the source_directory if it has been set on the project" do
|
26
|
+
coverage_file = Slather::CoverageFile.new(fixtures_project, "fixtures.m")
|
27
|
+
fixtures_project.source_directory = Pathname(File.join(File.dirname(__FILE__), '../fixtures/')).realpath.to_s
|
28
|
+
expect(coverage_file.source_file_pathname).to eq(fixtures_project["fixtures/fixtures.m"].real_path)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should look in the source_directory if it has been set on the project" do
|
32
|
+
coverage_file = Slather::CoverageFile.new(fixtures_project, "fixtures.m")
|
33
|
+
fixtures_project.source_directory = Pathname(File.join(File.dirname(__FILE__), '../fixtures/fixturesTests')).realpath.to_s
|
34
|
+
expect(coverage_file.source_file_pathname).to be_nil
|
35
|
+
end
|
36
|
+
|
25
37
|
it "should return nil if it couldn't find the coverage files's source implementation file in the project" do
|
26
38
|
whoami_file = Slather::CoverageFile.new(fixtures_project, "/some/path/whoami.gcno")
|
27
39
|
expect(whoami_file.source_file_pathname).to be_nil
|
@@ -102,5 +114,23 @@ OBJC
|
|
102
114
|
end
|
103
115
|
end
|
104
116
|
|
117
|
+
describe "num_lines_tested" do
|
118
|
+
it "should return the correct number of lines tested" do
|
119
|
+
expect(coverage_file.num_lines_tested).to eq(2)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
describe "num_lines_testable" do
|
124
|
+
it "should return the correct number of lines that are testable" do
|
125
|
+
expect(coverage_file.num_lines_testable).to eq(4)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe "percentage_lines_tested" do
|
130
|
+
it "should return the correct percentage of lines that are tested" do
|
131
|
+
expect(coverage_file.percentage_lines_tested).to eq(50)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
105
135
|
end
|
106
|
-
end
|
136
|
+
end
|
@@ -36,6 +36,21 @@ describe Slather::CoverageService::Coveralls do
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
context "coverage_service is :travis_pro" do
|
40
|
+
before(:each) { fixtures_project.ci_service = :travis_pro }
|
41
|
+
|
42
|
+
it "should return valid json for coveralls coverage data" do
|
43
|
+
fixtures_project.stub(:travis_job_id).and_return("9182")
|
44
|
+
fixtures_project.stub(:ci_access_token).and_return("abc123")
|
45
|
+
expect(fixtures_project.send(:coveralls_coverage_data)).to eq("{\"service_job_id\":\"9182\",\"service_name\":\"travis-pro\",\"repo_token\":\"abc123\",\"source_files\":[{\"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/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]}]}")
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should raise an error if there is no TRAVIS_JOB_ID" do
|
49
|
+
fixtures_project.stub(:travis_job_id).and_return(nil)
|
50
|
+
expect { fixtures_project.send(:coveralls_coverage_data) }.to raise_error(StandardError)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
39
54
|
it "should raise an error if it does not recognize the ci_service" do
|
40
55
|
fixtures_project.ci_service = :jenkins_ci
|
41
56
|
expect { fixtures_project.send(:coveralls_coverage_data) }.to raise_error(StandardError)
|
@@ -8,8 +8,8 @@ describe Slather::CoverageService::SimpleOutput do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
describe '#coverage_file_class' do
|
11
|
-
it "should return
|
12
|
-
expect(fixtures_project.send(:coverage_file_class)).to eq(Slather::
|
11
|
+
it "should return CoverageFile" do
|
12
|
+
expect(fixtures_project.send(:coverage_file_class)).to eq(Slather::CoverageFile)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
@@ -23,4 +23,4 @@ describe Slather::CoverageService::SimpleOutput do
|
|
23
23
|
fixtures_project.post
|
24
24
|
end
|
25
25
|
end
|
26
|
-
end
|
26
|
+
end
|
@@ -70,6 +70,7 @@ describe Slather::Project do
|
|
70
70
|
|
71
71
|
it "should return coverage file objects of type coverage_file_class for unignored project files" do
|
72
72
|
fixtures_project.ignore_list = ["*fixturesTests*"]
|
73
|
+
fixtures_project.stub(:dedupe) { |coverage_files| coverage_files }
|
73
74
|
coverage_files = fixtures_project.send(:coverage_files)
|
74
75
|
coverage_files.each { |cf| expect(cf.kind_of?(SpecCoverageFile)).to be_truthy }
|
75
76
|
expect(coverage_files.map { |cf| cf.source_file_pathname.basename.to_s }).to eq(["fixtures.m", "peekaview.m"])
|
@@ -81,10 +82,33 @@ describe Slather::Project do
|
|
81
82
|
end
|
82
83
|
end
|
83
84
|
|
85
|
+
describe "#dedupe" do
|
86
|
+
it "should return a deduplicated list of coverage files, favoring the file with higher coverage" do
|
87
|
+
coverage_file_1 = double(Slather::CoverageFile)
|
88
|
+
coverage_file_1.stub(:source_file_pathname).and_return("some/path/class1.m")
|
89
|
+
coverage_file_1.stub(:percentage_lines_tested).and_return(100)
|
90
|
+
|
91
|
+
coverage_file_2 = double(Slather::CoverageFile)
|
92
|
+
coverage_file_2.stub(:source_file_pathname).and_return("some/path/class2.m")
|
93
|
+
coverage_file_2.stub(:percentage_lines_tested).and_return(100)
|
94
|
+
|
95
|
+
coverage_file_2b = double(Slather::CoverageFile)
|
96
|
+
coverage_file_2b.stub(:source_file_pathname).and_return("some/path/class2.m")
|
97
|
+
coverage_file_2b.stub(:percentage_lines_tested).and_return(0)
|
98
|
+
|
99
|
+
coverage_files = [coverage_file_1, coverage_file_2, coverage_file_2b]
|
100
|
+
deduped_coverage_files = fixtures_project.send(:dedupe, coverage_files)
|
101
|
+
expect(deduped_coverage_files.size).to eq(2)
|
102
|
+
expect(deduped_coverage_files).to include(coverage_file_1)
|
103
|
+
expect(deduped_coverage_files).to include(coverage_file_2)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
84
107
|
describe "#configure_from_yml" do
|
85
108
|
it "should configure all properties from the yml" do
|
86
109
|
unstubbed_project = Slather::Project.open(FIXTURES_PROJECT_PATH)
|
87
110
|
expect(unstubbed_project).to receive(:configure_build_directory_from_yml)
|
111
|
+
expect(unstubbed_project).to receive(:configure_source_directory_from_yml)
|
88
112
|
expect(unstubbed_project).to receive(:configure_ignore_list_from_yml)
|
89
113
|
expect(unstubbed_project).to receive(:configure_ci_service_from_yml)
|
90
114
|
expect(unstubbed_project).to receive(:configure_coverage_service_from_yml)
|
@@ -140,6 +164,21 @@ describe Slather::Project do
|
|
140
164
|
end
|
141
165
|
end
|
142
166
|
|
167
|
+
describe "#configure_source_directory_from_yml" do
|
168
|
+
it "should set the source_directory if it has been provided in the yml and has not already been set" do
|
169
|
+
Slather::Project.stub(:yml).and_return({"source_directory" => "/some/path"})
|
170
|
+
fixtures_project.configure_source_directory_from_yml
|
171
|
+
expect(fixtures_project.source_directory).to eq("/some/path")
|
172
|
+
end
|
173
|
+
|
174
|
+
it "should not set the source_directory if it has already been set" do
|
175
|
+
Slather::Project.stub(:yml).and_return({"source_directory" => "/some/path"})
|
176
|
+
fixtures_project.source_directory = "/already/set"
|
177
|
+
fixtures_project.configure_source_directory_from_yml
|
178
|
+
expect(fixtures_project.source_directory).to eq("/already/set")
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
143
182
|
describe "#configure_ci_service_from_yml" do
|
144
183
|
it "should set the ci_service if it has been provided in the yml and has not already been set" do
|
145
184
|
Slather::Project.stub(:yml).and_return({"ci_service" => "some_service"})
|
@@ -189,6 +228,14 @@ describe Slather::Project do
|
|
189
228
|
end
|
190
229
|
end
|
191
230
|
|
231
|
+
describe "#configure_ci_access_token_from_yml" do
|
232
|
+
it "should set the ci_access_token if it has been provided by the yml" do
|
233
|
+
Slather::Project.stub(:yml).and_return({"ci_access_token" => "abc123"})
|
234
|
+
expect(fixtures_project).to receive(:ci_access_token=).with("abc123")
|
235
|
+
fixtures_project.configure_ci_access_token_from_yml
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
192
239
|
describe "#coverage_service=" do
|
193
240
|
it "should extend Slather::CoverageService::Coveralls and set coverage_service = :coveralls if given coveralls" do
|
194
241
|
expect(fixtures_project).to receive(:extend).with(Slather::CoverageService::Coveralls)
|
@@ -207,13 +254,13 @@ describe Slather::Project do
|
|
207
254
|
end
|
208
255
|
end
|
209
256
|
|
210
|
-
describe "#
|
257
|
+
describe "#slather_setup_for_coverage" do
|
211
258
|
it "should enable the correct flags to generate test coverage on all of the build_configurations build settings" do
|
212
|
-
fixtures_project.
|
259
|
+
fixtures_project.slather_setup_for_coverage
|
213
260
|
fixtures_project.build_configurations.each do |build_configuration|
|
214
261
|
expect(build_configuration.build_settings["GCC_INSTRUMENT_PROGRAM_FLOW_ARCS"]).to eq("YES")
|
215
262
|
expect(build_configuration.build_settings["GCC_GENERATE_TEST_COVERAGE_FILES"]).to eq("YES")
|
216
263
|
end
|
217
264
|
end
|
218
265
|
end
|
219
|
-
end
|
266
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
2
|
+
|
3
|
+
describe Slather do
|
4
|
+
|
5
|
+
describe "::prepare_pods" do
|
6
|
+
it "should setup the pods project for coverage" do
|
7
|
+
pods_mock = double(Object)
|
8
|
+
|
9
|
+
installer_mock = double(Object)
|
10
|
+
project_mock = double(Xcodeproj::Project)
|
11
|
+
installer_mock.stub(:project).and_return(project_mock)
|
12
|
+
expect(project_mock).to receive(:slather_setup_for_coverage)
|
13
|
+
|
14
|
+
expect(pods_mock).to receive(:post_install).and_yield(installer_mock)
|
15
|
+
|
16
|
+
Slather.prepare_pods(pods_mock)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
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.
|
4
|
+
version: 1.2.0
|
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-07-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -132,7 +132,6 @@ files:
|
|
132
132
|
- lib/slather/coveralls_coverage_file.rb
|
133
133
|
- lib/slather/project.rb
|
134
134
|
- lib/slather/version.rb
|
135
|
-
- scripts/travis.sh
|
136
135
|
- slather.gemspec
|
137
136
|
- spec/fixtures/fixtures.xcodeproj/project.pbxproj
|
138
137
|
- spec/fixtures/fixtures.xcodeproj/project.xcworkspace/contents.xcworkspacedata
|
@@ -151,6 +150,7 @@ files:
|
|
151
150
|
- spec/slather/coverage_service/simple_output_spec.rb
|
152
151
|
- spec/slather/fixtures.gcno
|
153
152
|
- spec/slather/project_spec.rb
|
153
|
+
- spec/slather/slather_spec.rb
|
154
154
|
- spec/spec_helper.rb
|
155
155
|
homepage: https://github.com/marklarr/slather
|
156
156
|
licenses:
|
@@ -194,5 +194,6 @@ test_files:
|
|
194
194
|
- spec/slather/coverage_service/simple_output_spec.rb
|
195
195
|
- spec/slather/fixtures.gcno
|
196
196
|
- spec/slather/project_spec.rb
|
197
|
+
- spec/slather/slather_spec.rb
|
197
198
|
- spec/spec_helper.rb
|
198
199
|
has_rdoc:
|
data/scripts/travis.sh
DELETED