slather 2.7.0 → 2.7.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 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