simplecov 0.17.1 → 0.21.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +106 -432
  3. data/README.md +375 -93
  4. data/doc/alternate-formatters.md +16 -1
  5. data/doc/commercial-services.md +5 -0
  6. data/lib/minitest/simplecov_plugin.rb +15 -0
  7. data/lib/simplecov.rb +294 -128
  8. data/lib/simplecov/combine.rb +30 -0
  9. data/lib/simplecov/combine/branches_combiner.rb +32 -0
  10. data/lib/simplecov/combine/files_combiner.rb +24 -0
  11. data/lib/simplecov/combine/lines_combiner.rb +43 -0
  12. data/lib/simplecov/combine/results_combiner.rb +60 -0
  13. data/lib/simplecov/command_guesser.rb +6 -3
  14. data/lib/simplecov/configuration.rb +191 -15
  15. data/lib/simplecov/coverage_statistics.rb +56 -0
  16. data/lib/simplecov/default_formatter.rb +20 -0
  17. data/lib/simplecov/defaults.rb +14 -13
  18. data/lib/simplecov/exit_codes.rb +5 -0
  19. data/lib/simplecov/exit_codes/exit_code_handling.rb +29 -0
  20. data/lib/simplecov/exit_codes/maximum_coverage_drop_check.rb +83 -0
  21. data/lib/simplecov/exit_codes/minimum_coverage_by_file_check.rb +54 -0
  22. data/lib/simplecov/exit_codes/minimum_overall_coverage_check.rb +53 -0
  23. data/lib/simplecov/file_list.rb +72 -13
  24. data/lib/simplecov/filter.rb +9 -6
  25. data/lib/simplecov/formatter.rb +2 -2
  26. data/lib/simplecov/formatter/multi_formatter.rb +5 -7
  27. data/lib/simplecov/formatter/simple_formatter.rb +4 -4
  28. data/lib/simplecov/last_run.rb +3 -1
  29. data/lib/simplecov/lines_classifier.rb +5 -5
  30. data/lib/simplecov/no_defaults.rb +1 -1
  31. data/lib/simplecov/process.rb +19 -0
  32. data/lib/simplecov/profiles.rb +9 -7
  33. data/lib/simplecov/result.rb +18 -12
  34. data/lib/simplecov/result_adapter.rb +30 -0
  35. data/lib/simplecov/result_merger.rb +130 -59
  36. data/lib/simplecov/simulate_coverage.rb +29 -0
  37. data/lib/simplecov/source_file.rb +272 -126
  38. data/lib/simplecov/source_file/branch.rb +84 -0
  39. data/lib/simplecov/source_file/line.rb +72 -0
  40. data/lib/simplecov/useless_results_remover.rb +18 -0
  41. data/lib/simplecov/version.rb +1 -1
  42. metadata +44 -158
  43. data/CONTRIBUTING.md +0 -51
  44. data/ISSUE_TEMPLATE.md +0 -23
  45. data/lib/simplecov/jruby_fix.rb +0 -44
  46. data/lib/simplecov/railtie.rb +0 -9
  47. data/lib/simplecov/railties/tasks.rake +0 -13
  48. 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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SimpleCov
4
- VERSION = "0.17.1".freeze
4
+ VERSION = "0.21.2"
5
5
  end
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.17.1
4
+ version: 0.21.2
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: 2019-09-16 00:00:00.000000000 Z
12
+ date: 2021-01-09 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: json
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: '3'
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: '3'
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.10.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.10.0
41
+ version: '0.11'
47
42
  - !ruby/object:Gem::Dependency
48
- name: docile
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: '1.1'
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: '1.1'
61
- - !ruby/object:Gem::Dependency
62
- name: bundler
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: http://github.com/colszowka/simplecov
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.2
120
+ mailing_list_uri: https://groups.google.com/forum/#!forum/simplecov
121
+ source_code_uri: https://github.com/simplecov-ruby/simplecov/tree/v0.21.2
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: 1.8.7
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.0.6
137
+ rubygems_version: 3.2.3
251
138
  signing_key:
252
139
  specification_version: 4
253
- summary: Code coverage for Ruby 1.9+ with a powerful configuration library and automatic
254
- merging of coverage across test suites
140
+ summary: Code coverage for Ruby
255
141
  test_files: []