slather 2.7.0 → 2.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d6388d4f62571f927f845978e5383f2508b98e7e3ba0205aaf546b5a54d465f5
4
- data.tar.gz: 837f82512416a6f57cb9c4510dcc7bd9524a4aeeaa05f42bdd841f18cf4fa1d9
3
+ metadata.gz: 82acbc5ecfb8610c49f39cdea2ff67387d30b3c41bf78c34095a59c7b572e802
4
+ data.tar.gz: a1c830dddd4d52d8641665086ad6a63c294f00a7dd3370c7cd588c8c586db06e
5
5
  SHA512:
6
- metadata.gz: 2b1af2387a7475860aeb3666883c5fd8d2e2b9be020680452140e71fa5bbb3ff057eb3b23b0ddb1c02d6fd55478aafceda18f5527ed2bd086b49d0d89a06e75b
7
- data.tar.gz: 0b464fbffa5722ed27fa157e429427387889e9e5c641ed2d2d2663a90ccc6f815163e19687a21fac2078dbb6c9c8c8baf9745ff1b55266e38f220aed6258c66f
6
+ metadata.gz: 239d29e6e221b6119be23af3dc92a7f28d4608dd71acf3f7ed03530953878ab42942903ed3f505a81051c3aa6903ba2a167b37867274b24ab7fc948b9006f08c
7
+ data.tar.gz: c918c164b1da93699be34bef38291b3c43d3d43eb1d258919dc3de0bd84beb855a44318a8d6638d567543ddad7a2e647ca07a1fe12d14678b9c54bbde25a749a
data/.travis.yml CHANGED
@@ -2,6 +2,8 @@ language: objective-c
2
2
  script: bundle exec rake
3
3
  osx_image: xcode12.2
4
4
 
5
+ cache: bundler
6
+
5
7
  before_install:
6
8
  - curl http://curl.haxx.se/ca/cacert.pem -o /usr/local/share/cacert.pem
7
9
  - gem install bundler -v "~> 2.0" --no-document
data/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v2.7.1
4
+
5
+ * Support generating coverage for framework targets
6
+ [onato](https://github.com/onato)
7
+ [#482](https://github.com/SlatherOrg/slather/pull/482)
8
+
9
+ * Show number of lines in HTML report
10
+ [SiemianHS](https://github.com/SiemianHS)
11
+ [#494](https://github.com/SlatherOrg/slather/pull/494)
12
+
13
+ * Fixed issues with HTML report generation
14
+ [fchiba](https://github.com/fchiba)
15
+ [#483](https://github.com/SlatherOrg/slather/pull/483)
16
+ [#484](https://github.com/SlatherOrg/slather/pull/484)
17
+
18
+ * Don't fail if a source file doesn't exist
19
+ [chillpop](https://github.com/chillpop)
20
+ [#492](https://github.com/SlatherOrg/slather/pull/492)
21
+
3
22
  ## v2.7.0
4
23
 
5
24
  * Add Branch Coverage data for ProfData coverage files
@@ -87,12 +87,22 @@ module Slather
87
87
  percentage = (total_tested_lines / total_relevant_lines.to_f) * 100.0
88
88
  cov.span "Total Coverage : "
89
89
  cov.span decimal_f(percentage) + '%', :class => class_for_coverage_percentage(percentage), :id => "total_coverage"
90
+ cov.span " ("
91
+ cov.span total_tested_lines, :id => "total_tested_lines"
92
+ cov.span " of "
93
+ cov.span total_relevant_lines, :id => "total_relevant_lines"
94
+ cov.span " lines)"
90
95
  }
91
96
 
92
97
  cov.h4 {
93
98
  percentage = (total_branches_tested / total_relevant_branches.to_f) * 100.0
94
99
  cov.span "Total Branch Coverage : "
95
100
  cov.span decimal_f(percentage) + '%', :class => class_for_coverage_percentage(percentage), :id => "total_coverage"
101
+ cov.span " ("
102
+ cov.span total_branches_tested, :id => "total_branches_tested"
103
+ cov.span " of "
104
+ cov.span total_relevant_branches, :id => "total_relevant_branches"
105
+ cov.span " lines)"
96
106
  }
97
107
 
98
108
  cov.input(:class => "search", :placeholder => "Search")
@@ -201,7 +211,7 @@ module Slather
201
211
  end
202
212
  current_line = line
203
213
  regions.each do |region|
204
- covered, remainder = current_line.split(region)
214
+ covered, remainder = current_line.split(region, 2)
205
215
  cov.code(covered, :class => "objc")
206
216
  cov.code(region, :class => "objc missed")
207
217
  current_line = remainder
@@ -221,7 +221,7 @@ module Slather
221
221
  # if the region wrapped to a new line before ending, put nil to indicate it didnt end on this line
222
222
  region_end = line == current_line ? col - region_start : nil
223
223
  if branch_region_data.key?(current_line)
224
- branch_region_data[current_line] = branch_region_data[current_line] + [region_start, region_end]
224
+ branch_region_data[current_line] << [region_start, region_end]
225
225
  else
226
226
  branch_region_data[current_line] = [[region_start, region_end]]
227
227
  end
@@ -135,7 +135,12 @@ module Slather
135
135
  coverage_json = JSON.parse(coverage_json_string)
136
136
  coverage_json["data"].reduce([]) do |result, chunk|
137
137
  result.concat(chunk["files"].map do |file|
138
- {"filename" => Pathname(file["filename"]).realpath, "segments" => file["segments"]}
138
+ filename = file["filename"]
139
+ path = Pathname(filename)
140
+ # Don't crash if the file doesn't exist on disk.
141
+ # This may happen for autogenerated files that have been deleted.
142
+ filename = path.exist? ? path.realpath : filename
143
+ {"filename" => filename, "segments" => file["segments"]}
139
144
  end)
140
145
  end
141
146
  end
@@ -582,6 +587,19 @@ module Slather
582
587
  def find_buildable_names(xcscheme)
583
588
  found_buildable_names = []
584
589
 
590
+ # enumerate code coverage targets
591
+ begin
592
+ code_coverage_targets = xcscheme.test_action.xml_element.elements['CodeCoverageTargets']
593
+ targets = code_coverage_targets.map do |node|
594
+ Xcodeproj::XCScheme::BuildableReference.new(node) if node.is_a?(REXML::Element)
595
+ end.compact
596
+ buildable_names = targets.each do |target|
597
+ found_buildable_names.push(target.buildable_name)
598
+ end
599
+ rescue
600
+ # just in case if there are no entries in the test action
601
+ end
602
+
585
603
  # enumerate build action entries
586
604
  begin
587
605
  xcscheme.build_action.entries.each do |entry|
@@ -1,3 +1,3 @@
1
1
  module Slather
2
- VERSION = '2.7.0' unless defined?(Slather::VERSION)
2
+ VERSION = '2.7.1' unless defined?(Slather::VERSION)
3
3
  end
@@ -0,0 +1,19 @@
1
+ //
2
+ // FixtureFramework.h
3
+ // FixtureFramework
4
+ //
5
+ // Created by Stephen Williams on 11/03/21.
6
+ // Copyright © 2021 marklarr. All rights reserved.
7
+ //
8
+
9
+ #import <Foundation/Foundation.h>
10
+
11
+ //! Project version number for FixtureFramework.
12
+ FOUNDATION_EXPORT double FixtureFrameworkVersionNumber;
13
+
14
+ //! Project version string for FixtureFramework.
15
+ FOUNDATION_EXPORT const unsigned char FixtureFrameworkVersionString[];
16
+
17
+ // In this header, you should import all the public headers of your framework using statements like #import <FixtureFramework/PublicHeader.h>
18
+
19
+
@@ -0,0 +1,7 @@
1
+ import Foundation
2
+
3
+ public struct FlashExperiment {
4
+ public let isAwesome = true
5
+
6
+ public init() {}
7
+ }
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleDevelopmentRegion</key>
6
+ <string>$(DEVELOPMENT_LANGUAGE)</string>
7
+ <key>CFBundleExecutable</key>
8
+ <string>$(EXECUTABLE_NAME)</string>
9
+ <key>CFBundleIdentifier</key>
10
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
11
+ <key>CFBundleInfoDictionaryVersion</key>
12
+ <string>6.0</string>
13
+ <key>CFBundleName</key>
14
+ <string>$(PRODUCT_NAME)</string>
15
+ <key>CFBundlePackageType</key>
16
+ <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
17
+ <key>CFBundleShortVersionString</key>
18
+ <string>1.0</string>
19
+ <key>CFBundleVersion</key>
20
+ <string>$(CURRENT_PROJECT_VERSION)</string>
21
+ <key>NSHumanReadableCopyright</key>
22
+ <string>Copyright © 2021 marklarr. All rights reserved.</string>
23
+ </dict>
24
+ </plist>
@@ -0,0 +1,34 @@
1
+ //
2
+ // FixtureFrameworkTests.swift
3
+ // FixtureFrameworkTests
4
+ //
5
+ // Created by Stephen Williams on 11/03/21.
6
+ // Copyright © 2021 marklarr. All rights reserved.
7
+ //
8
+
9
+ import XCTest
10
+ @testable import FixtureFramework
11
+
12
+ class FixtureFrameworkTests: XCTestCase {
13
+
14
+ override func setUpWithError() throws {
15
+ // Put setup code here. This method is called before the invocation of each test method in the class.
16
+ }
17
+
18
+ override func tearDownWithError() throws {
19
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
20
+ }
21
+
22
+ func testExample() throws {
23
+ // This is an example of a functional test case.
24
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
25
+ }
26
+
27
+ func testPerformanceExample() throws {
28
+ // This is an example of a performance test case.
29
+ self.measure {
30
+ // Put the code you want to measure the time of here.
31
+ }
32
+ }
33
+
34
+ }
@@ -0,0 +1,9 @@
1
+ import XCTest
2
+ import FixtureFramework
3
+
4
+ class FlashExperimentTests: XCTestCase {
5
+ func testExample() throws {
6
+ let sut = FlashExperiment()
7
+ XCTAssertTrue(sut.isAwesome, "Your flash experiment isn't awesome!")
8
+ }
9
+ }
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleDevelopmentRegion</key>
6
+ <string>$(DEVELOPMENT_LANGUAGE)</string>
7
+ <key>CFBundleExecutable</key>
8
+ <string>$(EXECUTABLE_NAME)</string>
9
+ <key>CFBundleIdentifier</key>
10
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
11
+ <key>CFBundleInfoDictionaryVersion</key>
12
+ <string>6.0</string>
13
+ <key>CFBundleName</key>
14
+ <string>$(PRODUCT_NAME)</string>
15
+ <key>CFBundlePackageType</key>
16
+ <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
17
+ <key>CFBundleShortVersionString</key>
18
+ <string>1.0</string>
19
+ <key>CFBundleVersion</key>
20
+ <string>1</string>
21
+ </dict>
22
+ </plist>
@@ -35,6 +35,8 @@
35
35
  8C9A2046195965F10013B6B3 /* libfixtures.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8C9A202D195965F10013B6B3 /* libfixtures.a */; };
36
36
  8C9A204C195965F10013B6B3 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8C9A204A195965F10013B6B3 /* InfoPlist.strings */; };
37
37
  8C9A204E195965F10013B6B3 /* fixturesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9A204D195965F10013B6B3 /* fixturesTests.m */; };
38
+ B1E6981225F96B680086A3E2 /* FixtureFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = B1E6980425F96B670086A3E2 /* FixtureFramework.h */; settings = {ATTRIBUTES = (Public, ); }; };
39
+ B1E6982025F96B930086A3E2 /* FlashExperiment.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1E6981F25F96B930086A3E2 /* FlashExperiment.swift */; };
38
40
  /* End PBXBuildFile section */
39
41
 
40
42
  /* Begin PBXContainerItemProxy section */
@@ -52,6 +54,20 @@
52
54
  remoteGlobalIDString = 8C9A202C195965F10013B6B3;
53
55
  remoteInfo = fixtures;
54
56
  };
57
+ B1E6982F25F96F490086A3E2 /* PBXContainerItemProxy */ = {
58
+ isa = PBXContainerItemProxy;
59
+ containerPortal = 8C9A2025195965F00013B6B3 /* Project object */;
60
+ proxyType = 1;
61
+ remoteGlobalIDString = B1E6980125F96B670086A3E2;
62
+ remoteInfo = FixtureFramework;
63
+ };
64
+ B1E6983725F970320086A3E2 /* PBXContainerItemProxy */ = {
65
+ isa = PBXContainerItemProxy;
66
+ containerPortal = 8C9A2025195965F00013B6B3 /* Project object */;
67
+ proxyType = 1;
68
+ remoteGlobalIDString = B1E6980125F96B670086A3E2;
69
+ remoteInfo = FixtureFramework;
70
+ };
55
71
  /* End PBXContainerItemProxy section */
56
72
 
57
73
  /* Begin PBXFileReference section */
@@ -86,6 +102,13 @@
86
102
  8C9A2049195965F10013B6B3 /* fixturesTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "fixturesTests-Info.plist"; sourceTree = "<group>"; };
87
103
  8C9A204B195965F10013B6B3 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
88
104
  8C9A204D195965F10013B6B3 /* fixturesTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = fixturesTests.m; sourceTree = "<group>"; };
105
+ B1E6980225F96B670086A3E2 /* FixtureFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FixtureFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; };
106
+ B1E6980425F96B670086A3E2 /* FixtureFramework.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FixtureFramework.h; sourceTree = "<group>"; };
107
+ B1E6980525F96B670086A3E2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
108
+ B1E6980F25F96B680086A3E2 /* FixtureFrameworkTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FixtureFrameworkTests.swift; sourceTree = "<group>"; };
109
+ B1E6981125F96B680086A3E2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
110
+ B1E6981F25F96B930086A3E2 /* FlashExperiment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlashExperiment.swift; sourceTree = "<group>"; };
111
+ B1E6982725F96BD30086A3E2 /* FlashExperimentTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlashExperimentTests.swift; sourceTree = "<group>"; };
89
112
  /* End PBXFileReference section */
90
113
 
91
114
  /* Begin PBXFrameworksBuildPhase section */
@@ -124,6 +147,13 @@
124
147
  );
125
148
  runOnlyForDeploymentPostprocessing = 0;
126
149
  };
150
+ B1E697FF25F96B670086A3E2 /* Frameworks */ = {
151
+ isa = PBXFrameworksBuildPhase;
152
+ buildActionMask = 2147483647;
153
+ files = (
154
+ );
155
+ runOnlyForDeploymentPostprocessing = 0;
156
+ };
127
157
  /* End PBXFrameworksBuildPhase section */
128
158
 
129
159
  /* Begin PBXGroup section */
@@ -155,6 +185,8 @@
155
185
  8C9A2036195965F10013B6B3 /* fixtures */,
156
186
  3773307A1CC42A58005EAF65 /* fixturesTwo */,
157
187
  8C9A2047195965F10013B6B3 /* fixturesTests */,
188
+ B1E6980325F96B670086A3E2 /* FixtureFramework */,
189
+ B1E6980E25F96B670086A3E2 /* FixtureFrameworkTests */,
158
190
  8C9A202F195965F10013B6B3 /* Frameworks */,
159
191
  8C9A202E195965F10013B6B3 /* Products */,
160
192
  );
@@ -167,6 +199,7 @@
167
199
  8C9A2040195965F10013B6B3 /* fixturesTests.xctest */,
168
200
  377330791CC42A58005EAF65 /* libfixturesTwo.dylib */,
169
201
  85AE690C1E45F0F900DA2D47 /* fixturesTestsSecond.xctest */,
202
+ B1E6980225F96B670086A3E2 /* FixtureFramework.framework */,
170
203
  );
171
204
  name = Products;
172
205
  sourceTree = "<group>";
@@ -236,6 +269,26 @@
236
269
  path = "Supporting Files";
237
270
  sourceTree = "<group>";
238
271
  };
272
+ B1E6980325F96B670086A3E2 /* FixtureFramework */ = {
273
+ isa = PBXGroup;
274
+ children = (
275
+ B1E6980425F96B670086A3E2 /* FixtureFramework.h */,
276
+ B1E6980525F96B670086A3E2 /* Info.plist */,
277
+ B1E6981F25F96B930086A3E2 /* FlashExperiment.swift */,
278
+ );
279
+ path = FixtureFramework;
280
+ sourceTree = "<group>";
281
+ };
282
+ B1E6980E25F96B670086A3E2 /* FixtureFrameworkTests */ = {
283
+ isa = PBXGroup;
284
+ children = (
285
+ B1E6980F25F96B680086A3E2 /* FixtureFrameworkTests.swift */,
286
+ B1E6981125F96B680086A3E2 /* Info.plist */,
287
+ B1E6982725F96BD30086A3E2 /* FlashExperimentTests.swift */,
288
+ );
289
+ path = FixtureFrameworkTests;
290
+ sourceTree = "<group>";
291
+ };
239
292
  /* End PBXGroup section */
240
293
 
241
294
  /* Begin PBXHeadersBuildPhase section */
@@ -260,6 +313,14 @@
260
313
  );
261
314
  runOnlyForDeploymentPostprocessing = 0;
262
315
  };
316
+ B1E697FD25F96B670086A3E2 /* Headers */ = {
317
+ isa = PBXHeadersBuildPhase;
318
+ buildActionMask = 2147483647;
319
+ files = (
320
+ B1E6981225F96B680086A3E2 /* FixtureFramework.h in Headers */,
321
+ );
322
+ runOnlyForDeploymentPostprocessing = 0;
323
+ };
263
324
  /* End PBXHeadersBuildPhase section */
264
325
 
265
326
  /* Begin PBXNativeTarget section */
@@ -309,6 +370,7 @@
309
370
  buildRules = (
310
371
  );
311
372
  dependencies = (
373
+ B1E6983025F96F490086A3E2 /* PBXTargetDependency */,
312
374
  );
313
375
  name = fixtures;
314
376
  productName = fixtures;
@@ -326,6 +388,7 @@
326
388
  buildRules = (
327
389
  );
328
390
  dependencies = (
391
+ B1E6983825F970320086A3E2 /* PBXTargetDependency */,
329
392
  8C9A2045195965F10013B6B3 /* PBXTargetDependency */,
330
393
  );
331
394
  name = fixturesTests;
@@ -333,18 +396,42 @@
333
396
  productReference = 8C9A2040195965F10013B6B3 /* fixturesTests.xctest */;
334
397
  productType = "com.apple.product-type.bundle.unit-test";
335
398
  };
399
+ B1E6980125F96B670086A3E2 /* FixtureFramework */ = {
400
+ isa = PBXNativeTarget;
401
+ buildConfigurationList = B1E6981725F96B680086A3E2 /* Build configuration list for PBXNativeTarget "FixtureFramework" */;
402
+ buildPhases = (
403
+ B1E697FD25F96B670086A3E2 /* Headers */,
404
+ B1E697FE25F96B670086A3E2 /* Sources */,
405
+ B1E697FF25F96B670086A3E2 /* Frameworks */,
406
+ B1E6980025F96B670086A3E2 /* Resources */,
407
+ );
408
+ buildRules = (
409
+ );
410
+ dependencies = (
411
+ );
412
+ name = FixtureFramework;
413
+ productName = FixtureFramework;
414
+ productReference = B1E6980225F96B670086A3E2 /* FixtureFramework.framework */;
415
+ productType = "com.apple.product-type.framework";
416
+ };
336
417
  /* End PBXNativeTarget section */
337
418
 
338
419
  /* Begin PBXProject section */
339
420
  8C9A2025195965F00013B6B3 /* Project object */ = {
340
421
  isa = PBXProject;
341
422
  attributes = {
423
+ LastSwiftUpdateCheck = 1240;
342
424
  LastUpgradeCheck = 0510;
343
425
  ORGANIZATIONNAME = marklarr;
344
426
  TargetAttributes = {
345
427
  377330781CC42A58005EAF65 = {
346
428
  CreatedOnToolsVersion = 7.3;
347
429
  };
430
+ B1E6980125F96B670086A3E2 = {
431
+ CreatedOnToolsVersion = 12.4;
432
+ LastSwiftMigration = 1240;
433
+ ProvisioningStyle = Automatic;
434
+ };
348
435
  };
349
436
  };
350
437
  buildConfigurationList = 8C9A2028195965F00013B6B3 /* Build configuration list for PBXProject "fixtures" */;
@@ -352,6 +439,7 @@
352
439
  developmentRegion = English;
353
440
  hasScannedForEncodings = 0;
354
441
  knownRegions = (
442
+ English,
355
443
  en,
356
444
  );
357
445
  mainGroup = 8C9A2024195965F00013B6B3;
@@ -363,6 +451,7 @@
363
451
  377330781CC42A58005EAF65 /* fixturesTwo */,
364
452
  8C9A203F195965F10013B6B3 /* fixturesTests */,
365
453
  85AE68FC1E45F0F900DA2D47 /* fixturesTestsSecond */,
454
+ B1E6980125F96B670086A3E2 /* FixtureFramework */,
366
455
  );
367
456
  };
368
457
  /* End PBXProject section */
@@ -384,6 +473,13 @@
384
473
  );
385
474
  runOnlyForDeploymentPostprocessing = 0;
386
475
  };
476
+ B1E6980025F96B670086A3E2 /* Resources */ = {
477
+ isa = PBXResourcesBuildPhase;
478
+ buildActionMask = 2147483647;
479
+ files = (
480
+ );
481
+ runOnlyForDeploymentPostprocessing = 0;
482
+ };
387
483
  /* End PBXResourcesBuildPhase section */
388
484
 
389
485
  /* Begin PBXSourcesBuildPhase section */
@@ -427,6 +523,14 @@
427
523
  );
428
524
  runOnlyForDeploymentPostprocessing = 0;
429
525
  };
526
+ B1E697FE25F96B670086A3E2 /* Sources */ = {
527
+ isa = PBXSourcesBuildPhase;
528
+ buildActionMask = 2147483647;
529
+ files = (
530
+ B1E6982025F96B930086A3E2 /* FlashExperiment.swift in Sources */,
531
+ );
532
+ runOnlyForDeploymentPostprocessing = 0;
533
+ };
430
534
  /* End PBXSourcesBuildPhase section */
431
535
 
432
536
  /* Begin PBXTargetDependency section */
@@ -440,6 +544,16 @@
440
544
  target = 8C9A202C195965F10013B6B3 /* fixtures */;
441
545
  targetProxy = 8C9A2044195965F10013B6B3 /* PBXContainerItemProxy */;
442
546
  };
547
+ B1E6983025F96F490086A3E2 /* PBXTargetDependency */ = {
548
+ isa = PBXTargetDependency;
549
+ target = B1E6980125F96B670086A3E2 /* FixtureFramework */;
550
+ targetProxy = B1E6982F25F96F490086A3E2 /* PBXContainerItemProxy */;
551
+ };
552
+ B1E6983825F970320086A3E2 /* PBXTargetDependency */ = {
553
+ isa = PBXTargetDependency;
554
+ target = B1E6980125F96B670086A3E2 /* FixtureFramework */;
555
+ targetProxy = B1E6983725F970320086A3E2 /* PBXContainerItemProxy */;
556
+ };
443
557
  /* End PBXTargetDependency section */
444
558
 
445
559
  /* Begin PBXVariantGroup section */
@@ -653,6 +767,105 @@
653
767
  };
654
768
  name = Release;
655
769
  };
770
+ B1E6981325F96B680086A3E2 /* Debug */ = {
771
+ isa = XCBuildConfiguration;
772
+ buildSettings = {
773
+ CLANG_ANALYZER_NONNULL = YES;
774
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
775
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
776
+ CLANG_ENABLE_MODULES = YES;
777
+ CLANG_ENABLE_OBJC_WEAK = YES;
778
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
779
+ CLANG_WARN_COMMA = YES;
780
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
781
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
782
+ CLANG_WARN_INFINITE_RECURSION = YES;
783
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
784
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
785
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
786
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
787
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
788
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
789
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
790
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
791
+ CLANG_WARN_UNREACHABLE_CODE = YES;
792
+ CODE_SIGN_STYLE = Automatic;
793
+ COMBINE_HIDPI_IMAGES = YES;
794
+ CURRENT_PROJECT_VERSION = 1;
795
+ DEFINES_MODULE = YES;
796
+ DYLIB_COMPATIBILITY_VERSION = 1;
797
+ DYLIB_CURRENT_VERSION = 1;
798
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
799
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
800
+ ENABLE_TESTABILITY = YES;
801
+ GCC_C_LANGUAGE_STANDARD = gnu11;
802
+ GCC_NO_COMMON_BLOCKS = YES;
803
+ INFOPLIST_FILE = FixtureFramework/Info.plist;
804
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
805
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
806
+ MACOSX_DEPLOYMENT_TARGET = 11.1;
807
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
808
+ MTL_FAST_MATH = YES;
809
+ PRODUCT_BUNDLE_IDENTIFIER = com.onato.FixtureFramework;
810
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
811
+ SKIP_INSTALL = YES;
812
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
813
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
814
+ SWIFT_VERSION = 5.0;
815
+ VERSIONING_SYSTEM = "apple-generic";
816
+ VERSION_INFO_PREFIX = "";
817
+ };
818
+ name = Debug;
819
+ };
820
+ B1E6981425F96B680086A3E2 /* Release */ = {
821
+ isa = XCBuildConfiguration;
822
+ buildSettings = {
823
+ CLANG_ANALYZER_NONNULL = YES;
824
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
825
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
826
+ CLANG_ENABLE_MODULES = YES;
827
+ CLANG_ENABLE_OBJC_WEAK = YES;
828
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
829
+ CLANG_WARN_COMMA = YES;
830
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
831
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
832
+ CLANG_WARN_INFINITE_RECURSION = YES;
833
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
834
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
835
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
836
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
837
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
838
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
839
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
840
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
841
+ CLANG_WARN_UNREACHABLE_CODE = YES;
842
+ CODE_SIGN_STYLE = Automatic;
843
+ COMBINE_HIDPI_IMAGES = YES;
844
+ COPY_PHASE_STRIP = NO;
845
+ CURRENT_PROJECT_VERSION = 1;
846
+ DEFINES_MODULE = YES;
847
+ DYLIB_COMPATIBILITY_VERSION = 1;
848
+ DYLIB_CURRENT_VERSION = 1;
849
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
850
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
851
+ GCC_C_LANGUAGE_STANDARD = gnu11;
852
+ GCC_NO_COMMON_BLOCKS = YES;
853
+ INFOPLIST_FILE = FixtureFramework/Info.plist;
854
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
855
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
856
+ MACOSX_DEPLOYMENT_TARGET = 11.1;
857
+ MTL_ENABLE_DEBUG_INFO = NO;
858
+ MTL_FAST_MATH = YES;
859
+ PRODUCT_BUNDLE_IDENTIFIER = com.onato.FixtureFramework;
860
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
861
+ SKIP_INSTALL = YES;
862
+ SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
863
+ SWIFT_VERSION = 5.0;
864
+ VERSIONING_SYSTEM = "apple-generic";
865
+ VERSION_INFO_PREFIX = "";
866
+ };
867
+ name = Release;
868
+ };
656
869
  /* End XCBuildConfiguration section */
657
870
 
658
871
  /* Begin XCConfigurationList section */
@@ -701,6 +914,15 @@
701
914
  defaultConfigurationIsVisible = 0;
702
915
  defaultConfigurationName = Release;
703
916
  };
917
+ B1E6981725F96B680086A3E2 /* Build configuration list for PBXNativeTarget "FixtureFramework" */ = {
918
+ isa = XCConfigurationList;
919
+ buildConfigurations = (
920
+ B1E6981325F96B680086A3E2 /* Debug */,
921
+ B1E6981425F96B680086A3E2 /* Release */,
922
+ );
923
+ defaultConfigurationIsVisible = 0;
924
+ defaultConfigurationName = Release;
925
+ };
704
926
  /* End XCConfigurationList section */
705
927
  };
706
928
  rootObject = 8C9A2025195965F00013B6B3 /* Project object */;
@@ -26,7 +26,18 @@
26
26
  buildConfiguration = "Debug"
27
27
  selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28
28
  selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29
- shouldUseLaunchSchemeArgsEnv = "YES">
29
+ shouldUseLaunchSchemeArgsEnv = "YES"
30
+ codeCoverageEnabled = "YES"
31
+ onlyGenerateCoverageForSpecifiedTargets = "YES">
32
+ <CodeCoverageTargets>
33
+ <BuildableReference
34
+ BuildableIdentifier = "primary"
35
+ BlueprintIdentifier = "B1E6980125F96B670086A3E2"
36
+ BuildableName = "FixtureFramework.framework"
37
+ BlueprintName = "FixtureFramework"
38
+ ReferencedContainer = "container:fixtures.xcodeproj">
39
+ </BuildableReference>
40
+ </CodeCoverageTargets>
30
41
  <Testables>
31
42
  <TestableReference
32
43
  skipped = "NO">
@@ -39,8 +50,6 @@
39
50
  </BuildableReference>
40
51
  </TestableReference>
41
52
  </Testables>
42
- <AdditionalOptions>
43
- </AdditionalOptions>
44
53
  </TestAction>
45
54
  <LaunchAction
46
55
  buildConfiguration = "Debug"
@@ -61,8 +70,6 @@
61
70
  ReferencedContainer = "container:fixtures.xcodeproj">
62
71
  </BuildableReference>
63
72
  </MacroExpansion>
64
- <AdditionalOptions>
65
- </AdditionalOptions>
66
73
  </LaunchAction>
67
74
  <ProfileAction
68
75
  buildConfiguration = "Release"
@@ -70,6 +77,15 @@
70
77
  savedToolIdentifier = ""
71
78
  useCustomWorkingDirectory = "NO"
72
79
  debugDocumentVersioning = "YES">
80
+ <MacroExpansion>
81
+ <BuildableReference
82
+ BuildableIdentifier = "primary"
83
+ BlueprintIdentifier = "8C9A202C195965F10013B6B3"
84
+ BuildableName = "libfixtures.a"
85
+ BlueprintName = "fixtures"
86
+ ReferencedContainer = "container:fixtures.xcodeproj">
87
+ </BuildableReference>
88
+ </MacroExpansion>
73
89
  </ProfileAction>
74
90
  <AnalyzeAction
75
91
  buildConfiguration = "Debug">
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>IDEDidComputeMac32BitWarning</key>
6
+ <true/>
7
+ </dict>
8
+ </plist>
@@ -167,6 +167,10 @@ describe Slather::ProfdataCoverageFile do
167
167
  profdata_coverage_file.segments = [[19, 9, 0, true, false], [19, 20, 1, true, false]]
168
168
  expect(profdata_coverage_file.branch_region_data[19]).to eq([[8,11]])
169
169
  end
170
+ it "should have two missing region data for line 19" do
171
+ profdata_coverage_file.segments = [[19, 9, 0, true, false], [19, 20, 1, true, false], [19, 30, 0, true, false], [19, 40, 1, true, true]]
172
+ expect(profdata_coverage_file.branch_region_data[19]).to eq([[8,11], [29,10]])
173
+ end
170
174
  end
171
175
 
172
176
  describe "#ignored" do
@@ -243,8 +243,9 @@ describe Slather::Project do
243
243
  allow(fixtures_project).to receive(:scheme).and_return("fixtures")
244
244
  fixtures_project.send(:configure_binary_file)
245
245
  binary_file_location = fixtures_project.send(:binary_file)
246
- expect(binary_file_location.count).to eq(1)
247
- expect(binary_file_location.first).to end_with("Debug/fixturesTests.xctest/Contents/MacOS/fixturesTests")
246
+ expect(binary_file_location.count).to eq(2)
247
+ expect(binary_file_location.first).to end_with("Debug/FixtureFramework.framework/Versions/A/FixtureFramework")
248
+ expect(binary_file_location.last).to end_with("Debug/fixturesTests.xctest/Contents/MacOS/fixturesTests")
248
249
  end
249
250
 
250
251
  it "should find the product path provided a workspace and scheme" do
@@ -252,8 +253,9 @@ describe Slather::Project do
252
253
  allow(fixtures_project).to receive(:scheme).and_return("fixtures")
253
254
  fixtures_project.send(:configure_binary_file)
254
255
  binary_file_location = fixtures_project.send(:binary_file)
255
- expect(binary_file_location.count).to eq(1)
256
- expect(binary_file_location.first).to end_with("Debug/fixturesTests.xctest/Contents/MacOS/fixturesTests")
256
+ expect(binary_file_location.count).to eq(2)
257
+ expect(binary_file_location.first).to end_with("Debug/FixtureFramework.framework/Versions/A/FixtureFramework")
258
+ expect(binary_file_location.last).to end_with("Debug/fixturesTests.xctest/Contents/MacOS/fixturesTests")
257
259
  end
258
260
 
259
261
  it "should find the product path for a scheme with no buildable products" do
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.7.0
4
+ version: 2.7.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: 2021-03-08 00:00:00.000000000 Z
11
+ date: 2021-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -255,6 +255,12 @@ files:
255
255
  - lib/slather/project.rb
256
256
  - lib/slather/version.rb
257
257
  - slather.gemspec
258
+ - spec/fixtures/FixtureFramework/FixtureFramework.h
259
+ - spec/fixtures/FixtureFramework/FlashExperiment.swift
260
+ - spec/fixtures/FixtureFramework/Info.plist
261
+ - spec/fixtures/FixtureFrameworkTests/FixtureFrameworkTests.swift
262
+ - spec/fixtures/FixtureFrameworkTests/FlashExperimentTests.swift
263
+ - spec/fixtures/FixtureFrameworkTests/Info.plist
258
264
  - spec/fixtures/cobertura.xml
259
265
  - spec/fixtures/fixtures.xcodeproj/project.pbxproj
260
266
  - spec/fixtures/fixtures.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -264,6 +270,7 @@ files:
264
270
  - spec/fixtures/fixtures.xcodeproj/xcshareddata/xcschemes/fixturesTestsSecond.xcscheme
265
271
  - spec/fixtures/fixtures.xcodeproj/xcshareddata/xcschemes/fixturesTwo.xcscheme
266
272
  - spec/fixtures/fixtures.xcworkspace/contents.xcworkspacedata
273
+ - spec/fixtures/fixtures.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
267
274
  - spec/fixtures/fixtures.xcworkspace/xcshareddata/xcschemes/fixturesTestsWorkspace.xcscheme
268
275
  - spec/fixtures/fixtures/Fixtures.swift
269
276
  - spec/fixtures/fixtures/Supporting Files/fixtures-Prefix.pch
@@ -339,6 +346,12 @@ signing_key:
339
346
  specification_version: 4
340
347
  summary: Test coverage reports for Xcode projects
341
348
  test_files:
349
+ - spec/fixtures/FixtureFramework/FixtureFramework.h
350
+ - spec/fixtures/FixtureFramework/FlashExperiment.swift
351
+ - spec/fixtures/FixtureFramework/Info.plist
352
+ - spec/fixtures/FixtureFrameworkTests/FixtureFrameworkTests.swift
353
+ - spec/fixtures/FixtureFrameworkTests/FlashExperimentTests.swift
354
+ - spec/fixtures/FixtureFrameworkTests/Info.plist
342
355
  - spec/fixtures/cobertura.xml
343
356
  - spec/fixtures/fixtures.xcodeproj/project.pbxproj
344
357
  - spec/fixtures/fixtures.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -348,6 +361,7 @@ test_files:
348
361
  - spec/fixtures/fixtures.xcodeproj/xcshareddata/xcschemes/fixturesTestsSecond.xcscheme
349
362
  - spec/fixtures/fixtures.xcodeproj/xcshareddata/xcschemes/fixturesTwo.xcscheme
350
363
  - spec/fixtures/fixtures.xcworkspace/contents.xcworkspacedata
364
+ - spec/fixtures/fixtures.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
351
365
  - spec/fixtures/fixtures.xcworkspace/xcshareddata/xcschemes/fixturesTestsWorkspace.xcscheme
352
366
  - spec/fixtures/fixtures/Fixtures.swift
353
367
  - spec/fixtures/fixtures/Supporting Files/fixtures-Prefix.pch