slather 2.4.8 → 2.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.travis.yml +4 -2
- data/CHANGELOG.md +100 -0
- data/README.md +26 -3
- data/assets/slather.css +2 -1
- data/lib/slather/command/coverage_command.rb +9 -1
- data/lib/slather/coverage_file.rb +14 -9
- data/lib/slather/coverage_service/coveralls.rb +129 -5
- data/lib/slather/coverage_service/html_output.rb +62 -6
- data/lib/slather/coverage_service/sonarqube_xml_output.rb +61 -0
- data/lib/slather/profdata_coverage_file.rb +42 -2
- data/lib/slather/project.rb +41 -7
- data/lib/slather/version.rb +1 -1
- data/lib/slather.rb +1 -0
- data/slather.gemspec +5 -5
- data/spec/fixtures/FixtureFramework/FixtureFramework.h +19 -0
- data/spec/fixtures/FixtureFramework/FlashExperiment.swift +7 -0
- data/spec/fixtures/FixtureFramework/Info.plist +24 -0
- data/spec/fixtures/FixtureFrameworkTests/FixtureFrameworkTests.swift +34 -0
- data/spec/fixtures/FixtureFrameworkTests/FlashExperimentTests.swift +9 -0
- data/spec/fixtures/FixtureFrameworkTests/Info.plist +22 -0
- data/spec/fixtures/cobertura.xml +157 -37
- data/spec/fixtures/fixtures.xcodeproj/project.pbxproj +222 -0
- data/spec/fixtures/fixtures.xcodeproj/xcshareddata/xcschemes/fixtures.xcscheme +21 -5
- data/spec/fixtures/fixtures.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- data/spec/fixtures/sonarqube-generic-coverage.xml +93 -0
- data/spec/slather/coverage_service/cobertura_xml_spec.rb +1 -1
- data/spec/slather/coverage_service/coveralls_spec.rb +20 -0
- data/spec/slather/coverage_service/html_output_spec.rb +2 -2
- data/spec/slather/coverage_service/json_spec.rb +1 -1
- data/spec/slather/coverage_service/llvm_cov_spec.rb +1 -1
- data/spec/slather/coverage_service/sonarqube_xml_spec.rb +46 -0
- data/spec/slather/profdata_coverage_spec.rb +16 -0
- data/spec/slather/project_spec.rb +12 -8
- data/spec/spec_helper.rb +1 -0
- metadata +38 -25
|
@@ -8,7 +8,7 @@ module Slather
|
|
|
8
8
|
include CoverageInfo
|
|
9
9
|
include CoverallsCoverage
|
|
10
10
|
|
|
11
|
-
attr_accessor :project, :source, :line_numbers_first, :line_data
|
|
11
|
+
attr_accessor :project, :source, :segments, :line_numbers_first, :line_data
|
|
12
12
|
|
|
13
13
|
def initialize(project, source, line_numbers_first)
|
|
14
14
|
self.project = project
|
|
@@ -188,7 +188,47 @@ module Slather
|
|
|
188
188
|
|
|
189
189
|
def branch_coverage_data
|
|
190
190
|
@branch_coverage_data ||= begin
|
|
191
|
-
Hash.new
|
|
191
|
+
branch_coverage_data = Hash.new
|
|
192
|
+
|
|
193
|
+
self.segments.each do |segment|
|
|
194
|
+
line, col, hits, has_count, *rest = segment
|
|
195
|
+
next if !has_count
|
|
196
|
+
if branch_coverage_data.key?(line)
|
|
197
|
+
branch_coverage_data[line] = branch_coverage_data[line] + [hits]
|
|
198
|
+
else
|
|
199
|
+
branch_coverage_data[line] = [hits]
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
branch_coverage_data
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
def branch_region_data
|
|
208
|
+
@branch_region_data ||= begin
|
|
209
|
+
branch_region_data = Hash.new
|
|
210
|
+
region_start = nil
|
|
211
|
+
current_line = 0
|
|
212
|
+
@segments ||= []
|
|
213
|
+
@segments.each do |segment|
|
|
214
|
+
line, col, hits, has_count, *rest = segment
|
|
215
|
+
# Make column 0 based index
|
|
216
|
+
col = col - 1
|
|
217
|
+
if hits == 0 && has_count
|
|
218
|
+
current_line = line
|
|
219
|
+
region_start = col
|
|
220
|
+
elsif region_start != nil && hits > 0 && has_count
|
|
221
|
+
# if the region wrapped to a new line before ending, put nil to indicate it didnt end on this line
|
|
222
|
+
region_end = line == current_line ? col - region_start : nil
|
|
223
|
+
if branch_region_data.key?(current_line)
|
|
224
|
+
branch_region_data[current_line] << [region_start, region_end]
|
|
225
|
+
else
|
|
226
|
+
branch_region_data[current_line] = [[region_start, region_end]]
|
|
227
|
+
end
|
|
228
|
+
region_start = nil
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
branch_region_data
|
|
192
232
|
end
|
|
193
233
|
end
|
|
194
234
|
|
data/lib/slather/project.rb
CHANGED
|
@@ -44,7 +44,7 @@ module Slather
|
|
|
44
44
|
class Project < Xcodeproj::Project
|
|
45
45
|
|
|
46
46
|
attr_accessor :build_directory, :ignore_list, :ci_service, :coverage_service, :coverage_access_token, :source_directory,
|
|
47
|
-
:output_directory, :xcodeproj, :show_html, :verbose_mode, :input_format, :scheme, :workspace, :binary_file, :binary_basename, :arch, :source_files,
|
|
47
|
+
:output_directory, :xcodeproj, :show_html, :cdn_assets, :verbose_mode, :input_format, :scheme, :workspace, :binary_file, :binary_basename, :arch, :source_files,
|
|
48
48
|
:decimals, :llvm_version, :configuration
|
|
49
49
|
|
|
50
50
|
alias_method :setup_for_coverage, :slather_setup_for_coverage
|
|
@@ -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
|
-
|
|
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
|
|
@@ -162,13 +167,24 @@ module Slather
|
|
|
162
167
|
end
|
|
163
168
|
private :create_coverage_files_for_binary
|
|
164
169
|
|
|
165
|
-
def create_coverage_files(binary_path,
|
|
170
|
+
def create_coverage_files(binary_path, path_objects)
|
|
166
171
|
line_numbers_first = Gem::Version.new(self.llvm_version) >= Gem::Version.new('8.1.0')
|
|
172
|
+
# get just file names from the path objects
|
|
173
|
+
pathnames = path_objects.map { |path_obj| path_obj["filename"] }.compact
|
|
174
|
+
# Map of path name => segment array
|
|
175
|
+
paths_to_segments = path_objects.reduce(Hash.new) do |hash, path_obj|
|
|
176
|
+
hash[path_obj["filename"]] = path_obj["segments"]
|
|
177
|
+
hash
|
|
178
|
+
end
|
|
167
179
|
files = create_profdata(binary_path, pathnames)
|
|
168
180
|
files.map do |source|
|
|
169
181
|
coverage_file = coverage_file_class.new(self, source, line_numbers_first)
|
|
170
182
|
# If a single source file is used, the resulting output does not contain the file name.
|
|
171
183
|
coverage_file.source_file_pathname = pathnames.first if pathnames.count == 1
|
|
184
|
+
# if there is segment data for the given path, add it to the coverage_file
|
|
185
|
+
if paths_to_segments.key?(coverage_file.source_file_pathname)
|
|
186
|
+
coverage_file.segments = paths_to_segments[coverage_file.source_file_pathname]
|
|
187
|
+
end
|
|
172
188
|
!coverage_file.ignored? ? coverage_file : nil
|
|
173
189
|
end.compact
|
|
174
190
|
end
|
|
@@ -192,7 +208,7 @@ module Slather
|
|
|
192
208
|
|
|
193
209
|
def profdata_coverage_dir
|
|
194
210
|
@profdata_coverage_dir ||= begin
|
|
195
|
-
raise StandardError, "The specified build directory (#{self.build_directory}) does not exist" unless File.
|
|
211
|
+
raise StandardError, "The specified build directory (#{self.build_directory}) does not exist" unless File.exist?(self.build_directory)
|
|
196
212
|
dir = nil
|
|
197
213
|
if self.scheme
|
|
198
214
|
dir = Dir[File.join(build_directory,"/**/CodeCoverage/#{self.scheme}")].first
|
|
@@ -277,7 +293,10 @@ module Slather
|
|
|
277
293
|
if self.arch
|
|
278
294
|
llvm_cov_args << "--arch" << self.arch
|
|
279
295
|
end
|
|
280
|
-
|
|
296
|
+
|
|
297
|
+
# POSIX systems have an ARG_MAX for the maximum total length of the command line, so the command may fail with an error message of "Argument list too long".
|
|
298
|
+
# Using the xargs command we can break the list of source_files into sublists small enough to be acceptable.
|
|
299
|
+
`printf '%s\\0' #{source_files.shelljoin} | xargs -0 xcrun llvm-cov #{llvm_cov_args.shelljoin}`
|
|
281
300
|
end
|
|
282
301
|
private :unsafe_profdata_llvm_cov_output
|
|
283
302
|
|
|
@@ -356,7 +375,7 @@ module Slather
|
|
|
356
375
|
end
|
|
357
376
|
|
|
358
377
|
def configure_ci_service
|
|
359
|
-
self.ci_service ||= (self.class.yml["ci_service"] || :
|
|
378
|
+
self.ci_service ||= (ENV["CI_SERVICE"] || self.class.yml["ci_service"] || :other)
|
|
360
379
|
end
|
|
361
380
|
|
|
362
381
|
def configure_input_format
|
|
@@ -424,6 +443,8 @@ module Slather
|
|
|
424
443
|
extend(Slather::CoverageService::HtmlOutput)
|
|
425
444
|
when :json
|
|
426
445
|
extend(Slather::CoverageService::JsonOutput)
|
|
446
|
+
when :sonarqube_xml
|
|
447
|
+
extend(Slather::CoverageService::SonarqubeXmlOutput)
|
|
427
448
|
else
|
|
428
449
|
raise ArgumentError, "`#{coverage_service}` is not a valid coverage service. Try `terminal`, `coveralls`, `gutter_json`, `cobertura_xml` or `html`"
|
|
429
450
|
end
|
|
@@ -482,7 +503,7 @@ module Slather
|
|
|
482
503
|
end
|
|
483
504
|
end
|
|
484
505
|
|
|
485
|
-
raise StandardError, "No scheme named '#{self.scheme}' found in #{self.path}" unless File.
|
|
506
|
+
raise StandardError, "No scheme named '#{self.scheme}' found in #{self.path}" unless File.exist? xcscheme_path
|
|
486
507
|
|
|
487
508
|
xcscheme = Xcodeproj::XCScheme.new(xcscheme_path)
|
|
488
509
|
|
|
@@ -566,6 +587,19 @@ module Slather
|
|
|
566
587
|
def find_buildable_names(xcscheme)
|
|
567
588
|
found_buildable_names = []
|
|
568
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
|
+
|
|
569
603
|
# enumerate build action entries
|
|
570
604
|
begin
|
|
571
605
|
xcscheme.build_action.entries.each do |entry|
|
data/lib/slather/version.rb
CHANGED
data/lib/slather.rb
CHANGED
|
@@ -12,6 +12,7 @@ require 'slather/coverage_service/simple_output'
|
|
|
12
12
|
require 'slather/coverage_service/html_output'
|
|
13
13
|
require 'slather/coverage_service/json_output'
|
|
14
14
|
require 'slather/coverage_service/llvm_cov_output'
|
|
15
|
+
require 'slather/coverage_service/sonarqube_xml_output'
|
|
15
16
|
require 'cfpropertylist'
|
|
16
17
|
|
|
17
18
|
module Slather
|
data/slather.gemspec
CHANGED
|
@@ -17,20 +17,20 @@ Gem::Specification.new do |spec|
|
|
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
18
18
|
spec.require_paths = ['lib']
|
|
19
19
|
|
|
20
|
-
spec.add_development_dependency 'bundler', '~>
|
|
20
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
|
21
21
|
spec.add_development_dependency 'coveralls', '~> 0.8'
|
|
22
22
|
spec.add_development_dependency 'simplecov', '~> 0'
|
|
23
23
|
spec.add_development_dependency 'rake', '~> 12.3'
|
|
24
24
|
spec.add_development_dependency 'rspec', '~> 3.8'
|
|
25
25
|
spec.add_development_dependency 'pry', '~> 0.12'
|
|
26
|
-
spec.add_development_dependency 'cocoapods', '~> 1.
|
|
26
|
+
spec.add_development_dependency 'cocoapods', '~> 1.10.beta.1'
|
|
27
27
|
spec.add_development_dependency 'json_spec', '~> 1.1'
|
|
28
28
|
spec.add_development_dependency 'equivalent-xml', '~> 0.6'
|
|
29
29
|
|
|
30
30
|
spec.add_dependency 'clamp', '~> 1.3'
|
|
31
|
-
spec.add_dependency 'xcodeproj', '~> 1.
|
|
32
|
-
spec.add_dependency 'nokogiri', '
|
|
31
|
+
spec.add_dependency 'xcodeproj', '~> 1.21'
|
|
32
|
+
spec.add_dependency 'nokogiri', '>= 1.14.3'
|
|
33
33
|
spec.add_dependency 'CFPropertyList', '>= 2.2', '< 4'
|
|
34
34
|
|
|
35
|
-
spec.add_runtime_dependency 'activesupport'
|
|
35
|
+
spec.add_runtime_dependency 'activesupport'
|
|
36
36
|
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,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,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>
|
data/spec/fixtures/cobertura.xml
CHANGED
|
@@ -1,58 +1,134 @@
|
|
|
1
1
|
<?xml version="1.0"?>
|
|
2
2
|
<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">
|
|
3
|
-
<coverage line-rate="0.7500000000000000" branch-rate="
|
|
3
|
+
<coverage line-rate="0.7500000000000000" branch-rate="0.6410256410256411" lines-covered="60" lines-valid="80" branches-covered="25" branches-valid="39" complexity="0.0" timestamp="1614041230" version="Slather 2.6.1">
|
|
4
4
|
<sources>
|
|
5
|
-
<source>/Users/
|
|
5
|
+
<source>/Users/hborawski/sandbox/slather</source>
|
|
6
6
|
</sources>
|
|
7
7
|
<packages>
|
|
8
|
-
<package name="spec.fixtures.fixtures" line-rate="0.5000000000000000" branch-rate="
|
|
8
|
+
<package name="spec.fixtures.fixtures" line-rate="0.5000000000000000" branch-rate="0.5000000000000000" complexity="0.0">
|
|
9
9
|
<classes>
|
|
10
|
-
<class name="fixtures.m" filename="spec/fixtures/fixtures/fixtures.m" line-rate="0.5000000000000000" branch-rate="
|
|
10
|
+
<class name="fixtures.m" filename="spec/fixtures/fixtures/fixtures.m" line-rate="0.5000000000000000" branch-rate="0.5000000000000000" complexity="0.0">
|
|
11
11
|
<methods/>
|
|
12
12
|
<lines>
|
|
13
|
-
<line number="14" branch="
|
|
13
|
+
<line number="14" branch="true" hits="1" condition-coverage="100% (1/1)">
|
|
14
|
+
<conditions>
|
|
15
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
16
|
+
</conditions>
|
|
17
|
+
</line>
|
|
14
18
|
<line number="15" branch="false" hits="1"/>
|
|
15
19
|
<line number="16" branch="false" hits="1"/>
|
|
16
|
-
<line number="19" branch="
|
|
20
|
+
<line number="19" branch="true" hits="0" condition-coverage="0% (0/1)">
|
|
21
|
+
<conditions>
|
|
22
|
+
<condition number="0" type="jump" coverage="0%"/>
|
|
23
|
+
</conditions>
|
|
24
|
+
</line>
|
|
17
25
|
<line number="20" branch="false" hits="0"/>
|
|
18
26
|
<line number="21" branch="false" hits="0"/>
|
|
19
27
|
</lines>
|
|
20
28
|
</class>
|
|
21
29
|
</classes>
|
|
22
30
|
</package>
|
|
23
|
-
<package name="spec.fixtures.fixtures.more_files" line-rate="0.4333333333333333" branch-rate="
|
|
31
|
+
<package name="spec.fixtures.fixtures.more_files" line-rate="0.4333333333333333" branch-rate="0.5000000000000000" complexity="0.0">
|
|
24
32
|
<classes>
|
|
25
|
-
<class name="Branches.m" filename="spec/fixtures/fixtures/more_files/Branches.m" line-rate="0.4333333333333333" branch-rate="
|
|
33
|
+
<class name="Branches.m" filename="spec/fixtures/fixtures/more_files/Branches.m" line-rate="0.4333333333333333" branch-rate="0.5000000000000000" complexity="0.0">
|
|
26
34
|
<methods/>
|
|
27
35
|
<lines>
|
|
28
|
-
<line number="14" branch="
|
|
29
|
-
|
|
36
|
+
<line number="14" branch="true" hits="2" condition-coverage="100% (1/1)">
|
|
37
|
+
<conditions>
|
|
38
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
39
|
+
</conditions>
|
|
40
|
+
</line>
|
|
41
|
+
<line number="15" branch="true" hits="2" condition-coverage="100% (4/4)">
|
|
42
|
+
<conditions>
|
|
43
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
44
|
+
</conditions>
|
|
45
|
+
</line>
|
|
30
46
|
<line number="16" branch="false" hits="1"/>
|
|
31
47
|
<line number="17" branch="false" hits="1"/>
|
|
32
|
-
<line number="18" branch="
|
|
48
|
+
<line number="18" branch="true" hits="1" condition-coverage="50% (2/4)">
|
|
49
|
+
<conditions>
|
|
50
|
+
<condition number="0" type="jump" coverage="50%"/>
|
|
51
|
+
</conditions>
|
|
52
|
+
</line>
|
|
33
53
|
<line number="19" branch="false" hits="0"/>
|
|
34
|
-
<line number="20" branch="
|
|
35
|
-
|
|
54
|
+
<line number="20" branch="true" hits="0" condition-coverage="100% (1/1)">
|
|
55
|
+
<conditions>
|
|
56
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
57
|
+
</conditions>
|
|
58
|
+
</line>
|
|
59
|
+
<line number="21" branch="true" hits="1" condition-coverage="100% (1/1)">
|
|
60
|
+
<conditions>
|
|
61
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
62
|
+
</conditions>
|
|
63
|
+
</line>
|
|
36
64
|
<line number="22" branch="false" hits="1"/>
|
|
37
|
-
<line number="23" branch="
|
|
65
|
+
<line number="23" branch="true" hits="1" condition-coverage="100% (1/1)">
|
|
66
|
+
<conditions>
|
|
67
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
68
|
+
</conditions>
|
|
69
|
+
</line>
|
|
38
70
|
<line number="24" branch="false" hits="2"/>
|
|
39
71
|
<line number="25" branch="false" hits="2"/>
|
|
40
|
-
<line number="26" branch="
|
|
72
|
+
<line number="26" branch="true" hits="2" condition-coverage="100% (3/3)">
|
|
73
|
+
<conditions>
|
|
74
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
75
|
+
</conditions>
|
|
76
|
+
</line>
|
|
41
77
|
<line number="27" branch="false" hits="2"/>
|
|
42
|
-
<line number="28" branch="
|
|
43
|
-
|
|
44
|
-
|
|
78
|
+
<line number="28" branch="true" hits="2" condition-coverage="0% (0/1)">
|
|
79
|
+
<conditions>
|
|
80
|
+
<condition number="0" type="jump" coverage="0%"/>
|
|
81
|
+
</conditions>
|
|
82
|
+
</line>
|
|
83
|
+
<line number="29" branch="true" hits="0" condition-coverage="0% (0/2)">
|
|
84
|
+
<conditions>
|
|
85
|
+
<condition number="0" type="jump" coverage="0%"/>
|
|
86
|
+
</conditions>
|
|
87
|
+
</line>
|
|
88
|
+
<line number="30" branch="true" hits="0" condition-coverage="0% (0/1)">
|
|
89
|
+
<conditions>
|
|
90
|
+
<condition number="0" type="jump" coverage="0%"/>
|
|
91
|
+
</conditions>
|
|
92
|
+
</line>
|
|
45
93
|
<line number="31" branch="false" hits="0"/>
|
|
46
|
-
<line number="32" branch="
|
|
94
|
+
<line number="32" branch="true" hits="0" condition-coverage="0% (0/1)">
|
|
95
|
+
<conditions>
|
|
96
|
+
<condition number="0" type="jump" coverage="0%"/>
|
|
97
|
+
</conditions>
|
|
98
|
+
</line>
|
|
47
99
|
<line number="33" branch="false" hits="0"/>
|
|
48
|
-
<line number="34" branch="
|
|
100
|
+
<line number="34" branch="true" hits="0" condition-coverage="0% (0/1)">
|
|
101
|
+
<conditions>
|
|
102
|
+
<condition number="0" type="jump" coverage="0%"/>
|
|
103
|
+
</conditions>
|
|
104
|
+
</line>
|
|
49
105
|
<line number="35" branch="false" hits="0"/>
|
|
50
|
-
<line number="36" branch="
|
|
51
|
-
|
|
106
|
+
<line number="36" branch="true" hits="0" condition-coverage="0% (0/1)">
|
|
107
|
+
<conditions>
|
|
108
|
+
<condition number="0" type="jump" coverage="0%"/>
|
|
109
|
+
</conditions>
|
|
110
|
+
</line>
|
|
111
|
+
<line number="37" branch="true" hits="0" condition-coverage="0% (0/1)">
|
|
112
|
+
<conditions>
|
|
113
|
+
<condition number="0" type="jump" coverage="0%"/>
|
|
114
|
+
</conditions>
|
|
115
|
+
</line>
|
|
52
116
|
<line number="38" branch="false" hits="0"/>
|
|
53
|
-
<line number="39" branch="
|
|
54
|
-
|
|
55
|
-
|
|
117
|
+
<line number="39" branch="true" hits="0" condition-coverage="0% (0/1)">
|
|
118
|
+
<conditions>
|
|
119
|
+
<condition number="0" type="jump" coverage="0%"/>
|
|
120
|
+
</conditions>
|
|
121
|
+
</line>
|
|
122
|
+
<line number="40" branch="true" hits="0" condition-coverage="0% (0/1)">
|
|
123
|
+
<conditions>
|
|
124
|
+
<condition number="0" type="jump" coverage="0%"/>
|
|
125
|
+
</conditions>
|
|
126
|
+
</line>
|
|
127
|
+
<line number="41" branch="true" hits="0" condition-coverage="0% (0/1)">
|
|
128
|
+
<conditions>
|
|
129
|
+
<condition number="0" type="jump" coverage="0%"/>
|
|
130
|
+
</conditions>
|
|
131
|
+
</line>
|
|
56
132
|
<line number="42" branch="false" hits="0"/>
|
|
57
133
|
<line number="43" branch="false" hits="0"/>
|
|
58
134
|
</lines>
|
|
@@ -64,19 +140,35 @@
|
|
|
64
140
|
<class name="BranchesTests.m" filename="spec/fixtures/fixturesTests/BranchesTests.m" line-rate="1.0000000000000000" branch-rate="1.0000000000000000" complexity="0.0">
|
|
65
141
|
<methods/>
|
|
66
142
|
<lines>
|
|
67
|
-
<line number="18" branch="
|
|
143
|
+
<line number="18" branch="true" hits="2" condition-coverage="100% (1/1)">
|
|
144
|
+
<conditions>
|
|
145
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
146
|
+
</conditions>
|
|
147
|
+
</line>
|
|
68
148
|
<line number="19" branch="false" hits="2"/>
|
|
69
149
|
<line number="20" branch="false" hits="2"/>
|
|
70
150
|
<line number="21" branch="false" hits="2"/>
|
|
71
|
-
<line number="23" branch="
|
|
151
|
+
<line number="23" branch="true" hits="2" condition-coverage="100% (1/1)">
|
|
152
|
+
<conditions>
|
|
153
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
154
|
+
</conditions>
|
|
155
|
+
</line>
|
|
72
156
|
<line number="24" branch="false" hits="2"/>
|
|
73
157
|
<line number="25" branch="false" hits="2"/>
|
|
74
158
|
<line number="26" branch="false" hits="2"/>
|
|
75
|
-
<line number="28" branch="
|
|
159
|
+
<line number="28" branch="true" hits="1" condition-coverage="100% (1/1)">
|
|
160
|
+
<conditions>
|
|
161
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
162
|
+
</conditions>
|
|
163
|
+
</line>
|
|
76
164
|
<line number="29" branch="false" hits="1"/>
|
|
77
165
|
<line number="30" branch="false" hits="1"/>
|
|
78
166
|
<line number="31" branch="false" hits="1"/>
|
|
79
|
-
<line number="33" branch="
|
|
167
|
+
<line number="33" branch="true" hits="1" condition-coverage="100% (1/1)">
|
|
168
|
+
<conditions>
|
|
169
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
170
|
+
</conditions>
|
|
171
|
+
</line>
|
|
80
172
|
<line number="34" branch="false" hits="1"/>
|
|
81
173
|
<line number="35" branch="false" hits="1"/>
|
|
82
174
|
<line number="36" branch="false" hits="1"/>
|
|
@@ -85,37 +177,65 @@
|
|
|
85
177
|
<class name="fixturesTests.m" filename="spec/fixtures/fixturesTests/fixturesTests.m" line-rate="1.0000000000000000" branch-rate="1.0000000000000000" complexity="0.0">
|
|
86
178
|
<methods/>
|
|
87
179
|
<lines>
|
|
88
|
-
<line number="20" branch="
|
|
180
|
+
<line number="20" branch="true" hits="2" condition-coverage="100% (1/1)">
|
|
181
|
+
<conditions>
|
|
182
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
183
|
+
</conditions>
|
|
184
|
+
</line>
|
|
89
185
|
<line number="21" branch="false" hits="2"/>
|
|
90
186
|
<line number="22" branch="false" hits="2"/>
|
|
91
187
|
<line number="23" branch="false" hits="2"/>
|
|
92
|
-
<line number="26" branch="
|
|
188
|
+
<line number="26" branch="true" hits="2" condition-coverage="100% (1/1)">
|
|
189
|
+
<conditions>
|
|
190
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
191
|
+
</conditions>
|
|
192
|
+
</line>
|
|
93
193
|
<line number="27" branch="false" hits="2"/>
|
|
94
194
|
<line number="28" branch="false" hits="2"/>
|
|
95
195
|
<line number="29" branch="false" hits="2"/>
|
|
96
|
-
<line number="32" branch="
|
|
196
|
+
<line number="32" branch="true" hits="1" condition-coverage="100% (1/1)">
|
|
197
|
+
<conditions>
|
|
198
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
199
|
+
</conditions>
|
|
200
|
+
</line>
|
|
97
201
|
<line number="33" branch="false" hits="1"/>
|
|
98
202
|
<line number="34" branch="false" hits="1"/>
|
|
99
203
|
<line number="35" branch="false" hits="1"/>
|
|
100
|
-
<line number="38" branch="
|
|
204
|
+
<line number="38" branch="true" hits="1" condition-coverage="100% (1/1)">
|
|
205
|
+
<conditions>
|
|
206
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
207
|
+
</conditions>
|
|
208
|
+
</line>
|
|
101
209
|
<line number="39" branch="false" hits="1"/>
|
|
102
210
|
<line number="40" branch="false" hits="1"/>
|
|
103
211
|
<line number="41" branch="false" hits="1"/>
|
|
104
212
|
<line number="42" branch="false" hits="1"/>
|
|
105
213
|
</lines>
|
|
106
214
|
</class>
|
|
107
|
-
<class name="peekaviewTests
|
|
215
|
+
<class name="peekaviewTests💣.m" filename="spec/fixtures/fixturesTests/peekaviewTests💣.m" line-rate="1.0000000000000000" branch-rate="1.0000000000000000" complexity="0.0">
|
|
108
216
|
<methods/>
|
|
109
217
|
<lines>
|
|
110
|
-
<line number="18" branch="
|
|
218
|
+
<line number="18" branch="true" hits="1" condition-coverage="100% (1/1)">
|
|
219
|
+
<conditions>
|
|
220
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
221
|
+
</conditions>
|
|
222
|
+
</line>
|
|
111
223
|
<line number="19" branch="false" hits="1"/>
|
|
112
224
|
<line number="20" branch="false" hits="1"/>
|
|
113
225
|
<line number="21" branch="false" hits="1"/>
|
|
114
|
-
<line number="24" branch="
|
|
226
|
+
<line number="24" branch="true" hits="1" condition-coverage="100% (1/1)">
|
|
227
|
+
<conditions>
|
|
228
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
229
|
+
</conditions>
|
|
230
|
+
</line>
|
|
115
231
|
<line number="25" branch="false" hits="1"/>
|
|
116
232
|
<line number="26" branch="false" hits="1"/>
|
|
117
233
|
<line number="27" branch="false" hits="1"/>
|
|
118
|
-
<line number="30" branch="
|
|
234
|
+
<line number="30" branch="true" hits="1" condition-coverage="100% (1/1)">
|
|
235
|
+
<conditions>
|
|
236
|
+
<condition number="0" type="jump" coverage="100%"/>
|
|
237
|
+
</conditions>
|
|
238
|
+
</line>
|
|
119
239
|
<line number="31" branch="false" hits="1"/>
|
|
120
240
|
<line number="32" branch="false" hits="1"/>
|
|
121
241
|
</lines>
|