simplecov 0.17.1 → 0.21.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 +4 -4
- data/CHANGELOG.md +100 -434
- data/README.md +375 -93
- data/doc/alternate-formatters.md +16 -1
- data/doc/commercial-services.md +5 -0
- data/lib/minitest/simplecov_plugin.rb +15 -0
- data/lib/simplecov.rb +294 -128
- data/lib/simplecov/combine.rb +30 -0
- data/lib/simplecov/combine/branches_combiner.rb +32 -0
- data/lib/simplecov/combine/files_combiner.rb +24 -0
- data/lib/simplecov/combine/lines_combiner.rb +43 -0
- data/lib/simplecov/combine/results_combiner.rb +60 -0
- data/lib/simplecov/command_guesser.rb +6 -3
- data/lib/simplecov/configuration.rb +191 -15
- data/lib/simplecov/coverage_statistics.rb +56 -0
- data/lib/simplecov/default_formatter.rb +20 -0
- data/lib/simplecov/defaults.rb +14 -13
- data/lib/simplecov/exit_codes.rb +5 -0
- data/lib/simplecov/exit_codes/exit_code_handling.rb +29 -0
- data/lib/simplecov/exit_codes/maximum_coverage_drop_check.rb +73 -0
- data/lib/simplecov/exit_codes/minimum_coverage_by_file_check.rb +54 -0
- data/lib/simplecov/exit_codes/minimum_overall_coverage_check.rb +53 -0
- data/lib/simplecov/file_list.rb +72 -13
- data/lib/simplecov/filter.rb +9 -6
- data/lib/simplecov/formatter.rb +2 -2
- data/lib/simplecov/formatter/multi_formatter.rb +5 -7
- data/lib/simplecov/formatter/simple_formatter.rb +4 -4
- data/lib/simplecov/last_run.rb +3 -1
- data/lib/simplecov/lines_classifier.rb +5 -5
- data/lib/simplecov/no_defaults.rb +1 -1
- data/lib/simplecov/process.rb +19 -0
- data/lib/simplecov/profiles.rb +9 -7
- data/lib/simplecov/result.rb +18 -12
- data/lib/simplecov/result_adapter.rb +30 -0
- data/lib/simplecov/result_merger.rb +130 -59
- data/lib/simplecov/simulate_coverage.rb +29 -0
- data/lib/simplecov/source_file.rb +272 -126
- data/lib/simplecov/source_file/branch.rb +84 -0
- data/lib/simplecov/source_file/line.rb +72 -0
- data/lib/simplecov/useless_results_remover.rb +18 -0
- data/lib/simplecov/version.rb +1 -1
- metadata +44 -158
- data/CONTRIBUTING.md +0 -51
- data/ISSUE_TEMPLATE.md +0 -23
- data/lib/simplecov/jruby_fix.rb +0 -44
- data/lib/simplecov/railtie.rb +0 -9
- data/lib/simplecov/railties/tasks.rake +0 -13
- data/lib/simplecov/raw_coverage.rb +0 -41
@@ -0,0 +1,84 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SimpleCov
|
4
|
+
class SourceFile
|
5
|
+
#
|
6
|
+
# Representing single branch that has been detected in coverage report.
|
7
|
+
# Give us support methods that handle needed calculations.
|
8
|
+
class Branch
|
9
|
+
attr_reader :start_line, :end_line, :coverage, :type
|
10
|
+
|
11
|
+
# rubocop:disable Metrics/ParameterLists
|
12
|
+
def initialize(start_line:, end_line:, coverage:, inline:, type:)
|
13
|
+
@start_line = start_line
|
14
|
+
@end_line = end_line
|
15
|
+
@coverage = coverage
|
16
|
+
@inline = inline
|
17
|
+
@type = type
|
18
|
+
@skipped = false
|
19
|
+
end
|
20
|
+
# rubocop:enable Metrics/ParameterLists
|
21
|
+
|
22
|
+
def inline?
|
23
|
+
@inline
|
24
|
+
end
|
25
|
+
|
26
|
+
#
|
27
|
+
# Return true if there is relevant count defined > 0
|
28
|
+
#
|
29
|
+
# @return [Boolean]
|
30
|
+
#
|
31
|
+
def covered?
|
32
|
+
!skipped? && coverage.positive?
|
33
|
+
end
|
34
|
+
|
35
|
+
#
|
36
|
+
# Check if branche missed or not
|
37
|
+
#
|
38
|
+
# @return [Boolean]
|
39
|
+
#
|
40
|
+
def missed?
|
41
|
+
!skipped? && coverage.zero?
|
42
|
+
end
|
43
|
+
|
44
|
+
# The line on which we want to report the coverage
|
45
|
+
#
|
46
|
+
# Usually we choose the line above the start of the branch (so that it shows up
|
47
|
+
# at if/else) because that
|
48
|
+
# * highlights the condition
|
49
|
+
# * makes it distinguishable if the first line of the branch is an inline branch
|
50
|
+
# (see the nested_branches fixture)
|
51
|
+
#
|
52
|
+
def report_line
|
53
|
+
if inline?
|
54
|
+
start_line
|
55
|
+
else
|
56
|
+
start_line - 1
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# Flags the branch as skipped
|
61
|
+
def skipped!
|
62
|
+
@skipped = true
|
63
|
+
end
|
64
|
+
|
65
|
+
# Returns true if the branch was marked skipped by virtue of nocov comments.
|
66
|
+
def skipped?
|
67
|
+
@skipped
|
68
|
+
end
|
69
|
+
|
70
|
+
def overlaps_with?(line_range)
|
71
|
+
start_line <= line_range.end && end_line >= line_range.begin
|
72
|
+
end
|
73
|
+
|
74
|
+
#
|
75
|
+
# Return array with coverage count and badge
|
76
|
+
#
|
77
|
+
# @return [Array]
|
78
|
+
#
|
79
|
+
def report
|
80
|
+
[type, coverage]
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SimpleCov
|
4
|
+
class SourceFile
|
5
|
+
# Representation of a single line in a source file including
|
6
|
+
# this specific line's source code, line_number and code coverage,
|
7
|
+
# with the coverage being either nil (coverage not applicable, e.g. comment
|
8
|
+
# line), 0 (line not covered) or >1 (the amount of times the line was
|
9
|
+
# executed)
|
10
|
+
class Line
|
11
|
+
# The source code for this line. Aliased as :source
|
12
|
+
attr_reader :src
|
13
|
+
# The line number in the source file. Aliased as :line, :number
|
14
|
+
attr_reader :line_number
|
15
|
+
# The coverage data for this line: either nil (never), 0 (missed) or >=1 (times covered)
|
16
|
+
attr_reader :coverage
|
17
|
+
# Whether this line was skipped
|
18
|
+
attr_reader :skipped
|
19
|
+
|
20
|
+
# Lets grab some fancy aliases, shall we?
|
21
|
+
alias source src
|
22
|
+
alias line line_number
|
23
|
+
alias number line_number
|
24
|
+
|
25
|
+
def initialize(src, line_number, coverage)
|
26
|
+
raise ArgumentError, "Only String accepted for source" unless src.is_a?(String)
|
27
|
+
raise ArgumentError, "Only Integer accepted for line_number" unless line_number.is_a?(Integer)
|
28
|
+
raise ArgumentError, "Only Integer and nil accepted for coverage" unless coverage.is_a?(Integer) || coverage.nil?
|
29
|
+
|
30
|
+
@src = src
|
31
|
+
@line_number = line_number
|
32
|
+
@coverage = coverage
|
33
|
+
@skipped = false
|
34
|
+
end
|
35
|
+
|
36
|
+
# Returns true if this is a line that should have been covered, but was not
|
37
|
+
def missed?
|
38
|
+
!never? && !skipped? && coverage.zero?
|
39
|
+
end
|
40
|
+
|
41
|
+
# Returns true if this is a line that has been covered
|
42
|
+
def covered?
|
43
|
+
!never? && !skipped? && coverage.positive?
|
44
|
+
end
|
45
|
+
|
46
|
+
# Returns true if this line is not relevant for coverage
|
47
|
+
def never?
|
48
|
+
!skipped? && coverage.nil?
|
49
|
+
end
|
50
|
+
|
51
|
+
# Flags this line as skipped
|
52
|
+
def skipped!
|
53
|
+
@skipped = true
|
54
|
+
end
|
55
|
+
|
56
|
+
# Returns true if this line was skipped, false otherwise. Lines are skipped if they are wrapped with
|
57
|
+
# # :nocov: comment lines.
|
58
|
+
def skipped?
|
59
|
+
skipped
|
60
|
+
end
|
61
|
+
|
62
|
+
# The status of this line - either covered, missed, skipped or never. Useful i.e. for direct use
|
63
|
+
# as a css class in report generation
|
64
|
+
def status
|
65
|
+
return "skipped" if skipped?
|
66
|
+
return "never" if never?
|
67
|
+
return "missed" if missed?
|
68
|
+
return "covered" if covered?
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SimpleCov
|
4
|
+
#
|
5
|
+
# Select the files that related to working scope directory of SimpleCov
|
6
|
+
#
|
7
|
+
module UselessResultsRemover
|
8
|
+
def self.call(coverage_result)
|
9
|
+
coverage_result.select do |path, _coverage|
|
10
|
+
path =~ root_regx
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.root_regx
|
15
|
+
@root_regx ||= /\A#{Regexp.escape(SimpleCov.root + File::SEPARATOR)}/i.freeze
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/simplecov/version.rb
CHANGED
metadata
CHANGED
@@ -1,237 +1,124 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simplecov
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.21.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christoph Olszowka
|
8
|
+
- Tobias Pfeiffer
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2021-01-04 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
+
name: docile
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
|
-
- - "
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.8'
|
20
|
-
- - "<"
|
18
|
+
- - "~>"
|
21
19
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
20
|
+
version: '1.1'
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
24
|
requirements:
|
27
|
-
- - "
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '1.8'
|
30
|
-
- - "<"
|
25
|
+
- - "~>"
|
31
26
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
27
|
+
version: '1.1'
|
33
28
|
- !ruby/object:Gem::Dependency
|
34
29
|
name: simplecov-html
|
35
30
|
requirement: !ruby/object:Gem::Requirement
|
36
31
|
requirements:
|
37
32
|
- - "~>"
|
38
33
|
- !ruby/object:Gem::Version
|
39
|
-
version: 0.
|
34
|
+
version: '0.11'
|
40
35
|
type: :runtime
|
41
36
|
prerelease: false
|
42
37
|
version_requirements: !ruby/object:Gem::Requirement
|
43
38
|
requirements:
|
44
39
|
- - "~>"
|
45
40
|
- !ruby/object:Gem::Version
|
46
|
-
version: 0.
|
41
|
+
version: '0.11'
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
43
|
+
name: simplecov_json_formatter
|
49
44
|
requirement: !ruby/object:Gem::Requirement
|
50
45
|
requirements:
|
51
46
|
- - "~>"
|
52
47
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
48
|
+
version: '0.1'
|
54
49
|
type: :runtime
|
55
50
|
prerelease: false
|
56
51
|
version_requirements: !ruby/object:Gem::Requirement
|
57
52
|
requirements:
|
58
53
|
- - "~>"
|
59
54
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
61
|
-
|
62
|
-
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - ">="
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: '0'
|
68
|
-
type: :development
|
69
|
-
prerelease: false
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
71
|
-
requirements:
|
72
|
-
- - ">="
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: '0'
|
75
|
-
- !ruby/object:Gem::Dependency
|
76
|
-
name: rake
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
78
|
-
requirements:
|
79
|
-
- - ">="
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: '0'
|
82
|
-
type: :development
|
83
|
-
prerelease: false
|
84
|
-
version_requirements: !ruby/object:Gem::Requirement
|
85
|
-
requirements:
|
86
|
-
- - ">="
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: '0'
|
89
|
-
- !ruby/object:Gem::Dependency
|
90
|
-
name: rspec
|
91
|
-
requirement: !ruby/object:Gem::Requirement
|
92
|
-
requirements:
|
93
|
-
- - ">="
|
94
|
-
- !ruby/object:Gem::Version
|
95
|
-
version: '0'
|
96
|
-
type: :development
|
97
|
-
prerelease: false
|
98
|
-
version_requirements: !ruby/object:Gem::Requirement
|
99
|
-
requirements:
|
100
|
-
- - ">="
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
version: '0'
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: test-unit
|
105
|
-
requirement: !ruby/object:Gem::Requirement
|
106
|
-
requirements:
|
107
|
-
- - ">="
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
110
|
-
type: :development
|
111
|
-
prerelease: false
|
112
|
-
version_requirements: !ruby/object:Gem::Requirement
|
113
|
-
requirements:
|
114
|
-
- - ">="
|
115
|
-
- !ruby/object:Gem::Version
|
116
|
-
version: '0'
|
117
|
-
- !ruby/object:Gem::Dependency
|
118
|
-
name: cucumber
|
119
|
-
requirement: !ruby/object:Gem::Requirement
|
120
|
-
requirements:
|
121
|
-
- - "<"
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
version: '3'
|
124
|
-
type: :development
|
125
|
-
prerelease: false
|
126
|
-
version_requirements: !ruby/object:Gem::Requirement
|
127
|
-
requirements:
|
128
|
-
- - "<"
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
version: '3'
|
131
|
-
- !ruby/object:Gem::Dependency
|
132
|
-
name: aruba
|
133
|
-
requirement: !ruby/object:Gem::Requirement
|
134
|
-
requirements:
|
135
|
-
- - ">="
|
136
|
-
- !ruby/object:Gem::Version
|
137
|
-
version: '0'
|
138
|
-
type: :development
|
139
|
-
prerelease: false
|
140
|
-
version_requirements: !ruby/object:Gem::Requirement
|
141
|
-
requirements:
|
142
|
-
- - ">="
|
143
|
-
- !ruby/object:Gem::Version
|
144
|
-
version: '0'
|
145
|
-
- !ruby/object:Gem::Dependency
|
146
|
-
name: capybara
|
147
|
-
requirement: !ruby/object:Gem::Requirement
|
148
|
-
requirements:
|
149
|
-
- - "<"
|
150
|
-
- !ruby/object:Gem::Version
|
151
|
-
version: '3'
|
152
|
-
type: :development
|
153
|
-
prerelease: false
|
154
|
-
version_requirements: !ruby/object:Gem::Requirement
|
155
|
-
requirements:
|
156
|
-
- - "<"
|
157
|
-
- !ruby/object:Gem::Version
|
158
|
-
version: '3'
|
159
|
-
- !ruby/object:Gem::Dependency
|
160
|
-
name: phantomjs
|
161
|
-
requirement: !ruby/object:Gem::Requirement
|
162
|
-
requirements:
|
163
|
-
- - ">="
|
164
|
-
- !ruby/object:Gem::Version
|
165
|
-
version: '0'
|
166
|
-
type: :development
|
167
|
-
prerelease: false
|
168
|
-
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
requirements:
|
170
|
-
- - ">="
|
171
|
-
- !ruby/object:Gem::Version
|
172
|
-
version: '0'
|
173
|
-
- !ruby/object:Gem::Dependency
|
174
|
-
name: poltergeist
|
175
|
-
requirement: !ruby/object:Gem::Requirement
|
176
|
-
requirements:
|
177
|
-
- - ">="
|
178
|
-
- !ruby/object:Gem::Version
|
179
|
-
version: '0'
|
180
|
-
type: :development
|
181
|
-
prerelease: false
|
182
|
-
version_requirements: !ruby/object:Gem::Requirement
|
183
|
-
requirements:
|
184
|
-
- - ">="
|
185
|
-
- !ruby/object:Gem::Version
|
186
|
-
version: '0'
|
187
|
-
description: Code coverage for Ruby 1.9+ with a powerful configuration library and
|
188
|
-
automatic merging of coverage across test suites
|
55
|
+
version: '0.1'
|
56
|
+
description: Code coverage for Ruby with a powerful configuration library and automatic
|
57
|
+
merging of coverage across test suites
|
189
58
|
email:
|
190
59
|
- christoph at olszowka de
|
60
|
+
- pragtob@gmail.com
|
191
61
|
executables: []
|
192
62
|
extensions: []
|
193
63
|
extra_rdoc_files: []
|
194
64
|
files:
|
195
65
|
- CHANGELOG.md
|
196
|
-
- CONTRIBUTING.md
|
197
|
-
- ISSUE_TEMPLATE.md
|
198
66
|
- LICENSE
|
199
67
|
- README.md
|
200
68
|
- doc/alternate-formatters.md
|
201
69
|
- doc/commercial-services.md
|
202
70
|
- doc/editor-integration.md
|
71
|
+
- lib/minitest/simplecov_plugin.rb
|
203
72
|
- lib/simplecov.rb
|
73
|
+
- lib/simplecov/combine.rb
|
74
|
+
- lib/simplecov/combine/branches_combiner.rb
|
75
|
+
- lib/simplecov/combine/files_combiner.rb
|
76
|
+
- lib/simplecov/combine/lines_combiner.rb
|
77
|
+
- lib/simplecov/combine/results_combiner.rb
|
204
78
|
- lib/simplecov/command_guesser.rb
|
205
79
|
- lib/simplecov/configuration.rb
|
80
|
+
- lib/simplecov/coverage_statistics.rb
|
81
|
+
- lib/simplecov/default_formatter.rb
|
206
82
|
- lib/simplecov/defaults.rb
|
207
83
|
- lib/simplecov/exit_codes.rb
|
84
|
+
- lib/simplecov/exit_codes/exit_code_handling.rb
|
85
|
+
- lib/simplecov/exit_codes/maximum_coverage_drop_check.rb
|
86
|
+
- lib/simplecov/exit_codes/minimum_coverage_by_file_check.rb
|
87
|
+
- lib/simplecov/exit_codes/minimum_overall_coverage_check.rb
|
208
88
|
- lib/simplecov/file_list.rb
|
209
89
|
- lib/simplecov/filter.rb
|
210
90
|
- lib/simplecov/formatter.rb
|
211
91
|
- lib/simplecov/formatter/multi_formatter.rb
|
212
92
|
- lib/simplecov/formatter/simple_formatter.rb
|
213
|
-
- lib/simplecov/jruby_fix.rb
|
214
93
|
- lib/simplecov/last_run.rb
|
215
94
|
- lib/simplecov/lines_classifier.rb
|
216
95
|
- lib/simplecov/load_global_config.rb
|
217
96
|
- lib/simplecov/no_defaults.rb
|
97
|
+
- lib/simplecov/process.rb
|
218
98
|
- lib/simplecov/profiles.rb
|
219
99
|
- lib/simplecov/profiles/bundler_filter.rb
|
220
100
|
- lib/simplecov/profiles/hidden_filter.rb
|
221
101
|
- lib/simplecov/profiles/rails.rb
|
222
102
|
- lib/simplecov/profiles/root_filter.rb
|
223
103
|
- lib/simplecov/profiles/test_frameworks.rb
|
224
|
-
- lib/simplecov/railtie.rb
|
225
|
-
- lib/simplecov/railties/tasks.rake
|
226
|
-
- lib/simplecov/raw_coverage.rb
|
227
104
|
- lib/simplecov/result.rb
|
105
|
+
- lib/simplecov/result_adapter.rb
|
228
106
|
- lib/simplecov/result_merger.rb
|
107
|
+
- lib/simplecov/simulate_coverage.rb
|
229
108
|
- lib/simplecov/source_file.rb
|
109
|
+
- lib/simplecov/source_file/branch.rb
|
110
|
+
- lib/simplecov/source_file/line.rb
|
111
|
+
- lib/simplecov/useless_results_remover.rb
|
230
112
|
- lib/simplecov/version.rb
|
231
|
-
homepage:
|
113
|
+
homepage: https://github.com/simplecov-ruby/simplecov
|
232
114
|
licenses:
|
233
115
|
- MIT
|
234
|
-
metadata:
|
116
|
+
metadata:
|
117
|
+
bug_tracker_uri: https://github.com/simplecov-ruby/simplecov/issues
|
118
|
+
changelog_uri: https://github.com/simplecov-ruby/simplecov/blob/main/CHANGELOG.md
|
119
|
+
documentation_uri: https://www.rubydoc.info/gems/simplecov/0.21.1
|
120
|
+
mailing_list_uri: https://groups.google.com/forum/#!forum/simplecov
|
121
|
+
source_code_uri: https://github.com/simplecov-ruby/simplecov/tree/v0.21.1
|
235
122
|
post_install_message:
|
236
123
|
rdoc_options: []
|
237
124
|
require_paths:
|
@@ -240,16 +127,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
240
127
|
requirements:
|
241
128
|
- - ">="
|
242
129
|
- !ruby/object:Gem::Version
|
243
|
-
version:
|
130
|
+
version: 2.5.0
|
244
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
245
132
|
requirements:
|
246
133
|
- - ">="
|
247
134
|
- !ruby/object:Gem::Version
|
248
135
|
version: '0'
|
249
136
|
requirements: []
|
250
|
-
rubygems_version: 3.
|
137
|
+
rubygems_version: 3.2.3
|
251
138
|
signing_key:
|
252
139
|
specification_version: 4
|
253
|
-
summary: Code coverage for Ruby
|
254
|
-
merging of coverage across test suites
|
140
|
+
summary: Code coverage for Ruby
|
255
141
|
test_files: []
|