simplecov 0.17.0 → 0.18.3

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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +104 -1
  3. data/CODE_OF_CONDUCT.md +76 -0
  4. data/README.md +275 -76
  5. data/doc/alternate-formatters.md +5 -0
  6. data/lib/minitest/simplecov_plugin.rb +11 -0
  7. data/lib/simplecov.rb +235 -62
  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 +110 -9
  15. data/lib/simplecov/coverage_statistics.rb +56 -0
  16. data/lib/simplecov/defaults.rb +4 -5
  17. data/lib/simplecov/file_list.rb +66 -13
  18. data/lib/simplecov/filter.rb +2 -1
  19. data/lib/simplecov/formatter/multi_formatter.rb +2 -2
  20. data/lib/simplecov/formatter/simple_formatter.rb +4 -4
  21. data/lib/simplecov/last_run.rb +3 -1
  22. data/lib/simplecov/lines_classifier.rb +2 -2
  23. data/lib/simplecov/profiles.rb +9 -7
  24. data/lib/simplecov/result.rb +39 -6
  25. data/lib/simplecov/result_adapter.rb +30 -0
  26. data/lib/simplecov/result_merger.rb +18 -11
  27. data/lib/simplecov/simulate_coverage.rb +29 -0
  28. data/lib/simplecov/source_file.rb +272 -126
  29. data/lib/simplecov/source_file/branch.rb +84 -0
  30. data/lib/simplecov/source_file/line.rb +72 -0
  31. data/lib/simplecov/useless_results_remover.rb +16 -0
  32. data/lib/simplecov/version.rb +1 -1
  33. metadata +33 -166
  34. data/lib/simplecov/jruby_fix.rb +0 -44
  35. data/lib/simplecov/railtie.rb +0 -9
  36. data/lib/simplecov/railties/tasks.rake +0 -13
  37. 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,16 @@
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
+ ROOT_REGX = /\A#{Regexp.escape(SimpleCov.root + File::SEPARATOR)}/io.freeze
9
+
10
+ def self.call(coverage_result)
11
+ coverage_result.select do |path, _coverage|
12
+ path =~ ROOT_REGX
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SimpleCov
4
- VERSION = "0.17.0".freeze
4
+ VERSION = "0.18.3"
5
5
  end
metadata CHANGED
@@ -1,49 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simplecov
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.18.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christoph Olszowka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-02 00:00:00.000000000 Z
11
+ date: 2020-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: json
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '1.8'
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '3'
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: '1.8'
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '3'
33
- - !ruby/object:Gem::Dependency
34
- name: simplecov-html
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: 0.10.0
40
- type: :runtime
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: 0.10.0
47
13
  - !ruby/object:Gem::Dependency
48
14
  name: docile
49
15
  requirement: !ruby/object:Gem::Requirement
@@ -59,133 +25,21 @@ dependencies:
59
25
  - !ruby/object:Gem::Version
60
26
  version: '1.1'
61
27
  - !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
28
+ name: simplecov-html
175
29
  requirement: !ruby/object:Gem::Requirement
176
30
  requirements:
177
- - - ">="
31
+ - - "~>"
178
32
  - !ruby/object:Gem::Version
179
- version: '0'
180
- type: :development
33
+ version: '0.11'
34
+ type: :runtime
181
35
  prerelease: false
182
36
  version_requirements: !ruby/object:Gem::Requirement
183
37
  requirements:
184
- - - ">="
38
+ - - "~>"
185
39
  - !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
40
+ version: '0.11'
41
+ description: Code coverage for Ruby with a powerful configuration library and automatic
42
+ merging of coverage across test suites
189
43
  email:
190
44
  - christoph at olszowka de
191
45
  executables: []
@@ -193,6 +47,7 @@ extensions: []
193
47
  extra_rdoc_files: []
194
48
  files:
195
49
  - CHANGELOG.md
50
+ - CODE_OF_CONDUCT.md
196
51
  - CONTRIBUTING.md
197
52
  - ISSUE_TEMPLATE.md
198
53
  - LICENSE
@@ -200,9 +55,16 @@ files:
200
55
  - doc/alternate-formatters.md
201
56
  - doc/commercial-services.md
202
57
  - doc/editor-integration.md
58
+ - lib/minitest/simplecov_plugin.rb
203
59
  - lib/simplecov.rb
60
+ - lib/simplecov/combine.rb
61
+ - lib/simplecov/combine/branches_combiner.rb
62
+ - lib/simplecov/combine/files_combiner.rb
63
+ - lib/simplecov/combine/lines_combiner.rb
64
+ - lib/simplecov/combine/results_combiner.rb
204
65
  - lib/simplecov/command_guesser.rb
205
66
  - lib/simplecov/configuration.rb
67
+ - lib/simplecov/coverage_statistics.rb
206
68
  - lib/simplecov/defaults.rb
207
69
  - lib/simplecov/exit_codes.rb
208
70
  - lib/simplecov/file_list.rb
@@ -210,7 +72,6 @@ files:
210
72
  - lib/simplecov/formatter.rb
211
73
  - lib/simplecov/formatter/multi_formatter.rb
212
74
  - lib/simplecov/formatter/simple_formatter.rb
213
- - lib/simplecov/jruby_fix.rb
214
75
  - lib/simplecov/last_run.rb
215
76
  - lib/simplecov/lines_classifier.rb
216
77
  - lib/simplecov/load_global_config.rb
@@ -221,17 +82,24 @@ files:
221
82
  - lib/simplecov/profiles/rails.rb
222
83
  - lib/simplecov/profiles/root_filter.rb
223
84
  - lib/simplecov/profiles/test_frameworks.rb
224
- - lib/simplecov/railtie.rb
225
- - lib/simplecov/railties/tasks.rake
226
- - lib/simplecov/raw_coverage.rb
227
85
  - lib/simplecov/result.rb
86
+ - lib/simplecov/result_adapter.rb
228
87
  - lib/simplecov/result_merger.rb
88
+ - lib/simplecov/simulate_coverage.rb
229
89
  - lib/simplecov/source_file.rb
90
+ - lib/simplecov/source_file/branch.rb
91
+ - lib/simplecov/source_file/line.rb
92
+ - lib/simplecov/useless_results_remover.rb
230
93
  - lib/simplecov/version.rb
231
- homepage: http://github.com/colszowka/simplecov
94
+ homepage: https://github.com/colszowka/simplecov
232
95
  licenses:
233
96
  - MIT
234
- metadata: {}
97
+ metadata:
98
+ bug_tracker_uri: https://github.com/colszowka/simplecov/issues
99
+ changelog_uri: https://github.com/colszowka/simplecov/blob/master/CHANGELOG.md
100
+ documentation_uri: https://www.rubydoc.info/gems/simplecov/0.18.3
101
+ mailing_list_uri: https://groups.google.com/forum/#!forum/simplecov
102
+ source_code_uri: https://github.com/colszowka/simplecov/tree/v0.18.3
235
103
  post_install_message:
236
104
  rdoc_options: []
237
105
  require_paths:
@@ -240,16 +108,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
240
108
  requirements:
241
109
  - - ">="
242
110
  - !ruby/object:Gem::Version
243
- version: 1.8.7
111
+ version: 2.4.0
244
112
  required_rubygems_version: !ruby/object:Gem::Requirement
245
113
  requirements:
246
114
  - - ">="
247
115
  - !ruby/object:Gem::Version
248
116
  version: '0'
249
117
  requirements: []
250
- rubygems_version: 3.0.1
118
+ rubygems_version: 3.1.2
251
119
  signing_key:
252
120
  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
121
+ summary: Code coverage for Ruby
255
122
  test_files: []