simplecov 0.18.5 → 0.22.0
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 +93 -520
- data/README.md +131 -36
- data/doc/alternate-formatters.md +12 -2
- data/doc/commercial-services.md +5 -0
- data/lib/minitest/simplecov_plugin.rb +1 -1
- data/lib/simplecov/configuration.rb +110 -16
- data/lib/simplecov/default_formatter.rb +20 -0
- data/lib/simplecov/defaults.rb +11 -8
- data/lib/simplecov/exit_codes/exit_code_handling.rb +29 -0
- data/lib/simplecov/exit_codes/maximum_coverage_drop_check.rb +83 -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/exit_codes.rb +5 -0
- data/lib/simplecov/file_list.rb +12 -6
- data/lib/simplecov/filter.rb +7 -5
- data/lib/simplecov/formatter/multi_formatter.rb +5 -7
- data/lib/simplecov/formatter.rb +2 -2
- data/lib/simplecov/lines_classifier.rb +3 -3
- data/lib/simplecov/no_defaults.rb +1 -1
- data/lib/simplecov/process.rb +19 -0
- data/lib/simplecov/result.rb +8 -35
- data/lib/simplecov/result_merger.rb +121 -57
- data/lib/simplecov/source_file/line.rb +1 -1
- data/lib/simplecov/source_file.rb +9 -3
- data/lib/simplecov/useless_results_remover.rb +5 -3
- data/lib/simplecov/version.rb +1 -1
- data/lib/simplecov.rb +130 -139
- metadata +34 -15
- data/CODE_OF_CONDUCT.md +0 -76
- data/CONTRIBUTING.md +0 -51
- data/ISSUE_TEMPLATE.md +0 -23
@@ -56,7 +56,7 @@ module SimpleCov
|
|
56
56
|
# Returns true if this line was skipped, false otherwise. Lines are skipped if they are wrapped with
|
57
57
|
# # :nocov: comment lines.
|
58
58
|
def skipped?
|
59
|
-
|
59
|
+
skipped
|
60
60
|
end
|
61
61
|
|
62
62
|
# The status of this line - either covered, missed, skipped or never. Useful i.e. for direct use
|
@@ -18,7 +18,7 @@ module SimpleCov
|
|
18
18
|
|
19
19
|
# The path to this source file relative to the projects directory
|
20
20
|
def project_filename
|
21
|
-
@filename.
|
21
|
+
@filename.delete_prefix(SimpleCov.root)
|
22
22
|
end
|
23
23
|
|
24
24
|
# The source code for this file. Aliased as :source
|
@@ -217,7 +217,13 @@ module SimpleCov
|
|
217
217
|
# simplecov-html to have encoding shenaningans in one place. See #866
|
218
218
|
# also setting these option on `file.set_encoding` doesn't seem to work
|
219
219
|
# properly so it has to be done here.
|
220
|
-
file_lines.each
|
220
|
+
file_lines.each do |line|
|
221
|
+
if line.encoding == Encoding::UTF_8
|
222
|
+
line
|
223
|
+
else
|
224
|
+
line.encode!("UTF-8", invalid: :replace, undef: :replace)
|
225
|
+
end
|
226
|
+
end
|
221
227
|
end
|
222
228
|
|
223
229
|
def build_lines
|
@@ -238,7 +244,7 @@ module SimpleCov
|
|
238
244
|
end
|
239
245
|
|
240
246
|
def lines_strength
|
241
|
-
lines.
|
247
|
+
lines.sum { |line| line.coverage.to_i }
|
242
248
|
end
|
243
249
|
|
244
250
|
# Warning to identify condition from Issue #56
|
@@ -5,12 +5,14 @@ module SimpleCov
|
|
5
5
|
# Select the files that related to working scope directory of SimpleCov
|
6
6
|
#
|
7
7
|
module UselessResultsRemover
|
8
|
-
ROOT_REGX = /\A#{Regexp.escape(SimpleCov.root + File::SEPARATOR)}/io.freeze
|
9
|
-
|
10
8
|
def self.call(coverage_result)
|
11
9
|
coverage_result.select do |path, _coverage|
|
12
|
-
path =~
|
10
|
+
path =~ root_regx
|
13
11
|
end
|
14
12
|
end
|
13
|
+
|
14
|
+
def self.root_regx
|
15
|
+
@root_regx ||= /\A#{Regexp.escape(SimpleCov.root + File::SEPARATOR)}/i.freeze
|
16
|
+
end
|
15
17
|
end
|
16
18
|
end
|
data/lib/simplecov/version.rb
CHANGED
data/lib/simplecov.rb
CHANGED
@@ -3,19 +3,17 @@
|
|
3
3
|
require "English"
|
4
4
|
|
5
5
|
# Coverage may be inaccurate under JRUBY.
|
6
|
-
if defined?(JRUBY_VERSION) && defined?(JRuby)
|
6
|
+
if defined?(JRUBY_VERSION) && defined?(JRuby) && !org.jruby.RubyInstanceConfig.FULL_TRACE_ENABLED
|
7
7
|
|
8
8
|
# @see https://github.com/jruby/jruby/issues/1196
|
9
9
|
# @see https://github.com/metricfu/metric_fu/pull/226
|
10
|
-
# @see https://github.com/
|
11
|
-
# @see https://github.com/
|
10
|
+
# @see https://github.com/simplecov-ruby/simplecov/issues/420
|
11
|
+
# @see https://github.com/simplecov-ruby/simplecov/issues/86
|
12
12
|
# @see https://jira.codehaus.org/browse/JRUBY-6106
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
' or set the "debug.fullTrace=true" option in your .jrubyrc'
|
18
|
-
end
|
14
|
+
warn 'Coverage may be inaccurate; set the "--debug" command line option,' \
|
15
|
+
' or do JRUBY_OPTS="--debug"' \
|
16
|
+
' or set the "debug.fullTrace=true" option in your .jrubyrc'
|
19
17
|
end
|
20
18
|
|
21
19
|
#
|
@@ -23,9 +21,7 @@ end
|
|
23
21
|
#
|
24
22
|
module SimpleCov
|
25
23
|
class << self
|
26
|
-
attr_accessor :running
|
27
|
-
attr_accessor :pid
|
28
|
-
attr_reader :exit_exception
|
24
|
+
attr_accessor :running, :pid
|
29
25
|
|
30
26
|
# Basically, should we take care of at_exit behavior or something else?
|
31
27
|
# Used by the minitest plugin. See lib/minitest/simplecov_plugin.rb
|
@@ -52,6 +48,11 @@ module SimpleCov
|
|
52
48
|
def start(profile = nil, &block)
|
53
49
|
require "coverage"
|
54
50
|
initial_setup(profile, &block)
|
51
|
+
require_relative "./simplecov/process" if SimpleCov.enabled_for_subprocesses? &&
|
52
|
+
::Process.respond_to?(:fork)
|
53
|
+
|
54
|
+
make_parallel_tests_available
|
55
|
+
|
55
56
|
@result = nil
|
56
57
|
self.pid = Process.pid
|
57
58
|
|
@@ -60,6 +61,7 @@ module SimpleCov
|
|
60
61
|
|
61
62
|
#
|
62
63
|
# Collate a series of SimpleCov result files into a single SimpleCov output.
|
64
|
+
#
|
63
65
|
# You can optionally specify configuration with a block:
|
64
66
|
# SimpleCov.collate Dir["simplecov-resultset-*/.resultset.json"]
|
65
67
|
# OR
|
@@ -77,20 +79,17 @@ module SimpleCov
|
|
77
79
|
# available config options, or checkout the README for more in-depth
|
78
80
|
# information about coverage collation
|
79
81
|
#
|
80
|
-
|
81
|
-
|
82
|
+
# By default `collate` ignores the merge_timeout so all results of all files specified will be
|
83
|
+
# merged together. If you want to honor the merge_timeout then provide the keyword argument
|
84
|
+
# `ignore_timeout: false`.
|
85
|
+
#
|
86
|
+
def collate(result_filenames, profile = nil, ignore_timeout: true, &block)
|
87
|
+
raise "There are no reports to be merged" if result_filenames.empty?
|
82
88
|
|
83
89
|
initial_setup(profile, &block)
|
84
90
|
|
85
|
-
results = result_filenames.flat_map do |filename|
|
86
|
-
# Re-create each included instance of SimpleCov::Result from the stored run data.
|
87
|
-
(JSON.parse(File.read(filename)) || {}).map do |command_name, coverage|
|
88
|
-
SimpleCov::Result.from_hash(command_name => coverage)
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
91
|
# Use the ResultMerger to produce a single, merged result, ready to use.
|
93
|
-
@result =
|
92
|
+
@result = ResultMerger.merge_and_store(*result_filenames, ignore_timeout: ignore_timeout)
|
94
93
|
|
95
94
|
run_exit_tasks!
|
96
95
|
end
|
@@ -103,7 +102,6 @@ module SimpleCov
|
|
103
102
|
return @result if result?
|
104
103
|
|
105
104
|
# Collect our coverage result
|
106
|
-
|
107
105
|
process_coverage_result if running
|
108
106
|
|
109
107
|
# If we're using merging of results, store the current result
|
@@ -173,54 +171,71 @@ module SimpleCov
|
|
173
171
|
@result = nil
|
174
172
|
end
|
175
173
|
|
174
|
+
def at_exit_behavior
|
175
|
+
# If we are in a different process than called start, don't interfere.
|
176
|
+
return if SimpleCov.pid != Process.pid
|
177
|
+
|
178
|
+
# If SimpleCov is no longer running then don't run exit tasks
|
179
|
+
SimpleCov.run_exit_tasks! if SimpleCov.running
|
180
|
+
end
|
181
|
+
|
182
|
+
# @api private
|
176
183
|
#
|
177
|
-
#
|
178
|
-
# This will get called inside the at_exit block
|
184
|
+
# Called from at_exit block
|
179
185
|
#
|
180
|
-
def
|
181
|
-
|
186
|
+
def run_exit_tasks!
|
187
|
+
error_exit_status = exit_status_from_exception
|
188
|
+
|
189
|
+
at_exit.call
|
190
|
+
|
191
|
+
exit_and_report_previous_error(error_exit_status) if previous_error?(error_exit_status)
|
192
|
+
process_results_and_report_error if ready_to_process_results?
|
182
193
|
end
|
183
194
|
|
195
|
+
#
|
196
|
+
# @api private
|
184
197
|
#
|
185
198
|
# Returns the exit status from the exit exception
|
186
199
|
#
|
187
200
|
def exit_status_from_exception
|
188
|
-
|
201
|
+
# Capture the current exception if it exists
|
202
|
+
@exit_exception = $ERROR_INFO
|
203
|
+
return nil unless @exit_exception
|
189
204
|
|
190
|
-
if exit_exception.is_a?(SystemExit)
|
191
|
-
exit_exception.status
|
205
|
+
if @exit_exception.is_a?(SystemExit)
|
206
|
+
@exit_exception.status
|
192
207
|
else
|
193
208
|
SimpleCov::ExitCodes::EXCEPTION
|
194
209
|
end
|
195
210
|
end
|
196
211
|
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
SimpleCov.run_exit_tasks! if SimpleCov.running
|
212
|
+
# @api private
|
213
|
+
def previous_error?(error_exit_status)
|
214
|
+
# Normally it'd be enough to check for previous error but when running test_unit
|
215
|
+
# status is 0
|
216
|
+
error_exit_status && error_exit_status != SimpleCov::ExitCodes::SUCCESS
|
203
217
|
end
|
204
218
|
|
205
|
-
# @api private
|
206
219
|
#
|
207
|
-
#
|
220
|
+
# @api private
|
208
221
|
#
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
exit_status
|
222
|
+
# Thinking: Move this behavior earlier so if there was an error we do nothing?
|
223
|
+
def exit_and_report_previous_error(exit_status)
|
224
|
+
warn("Stopped processing SimpleCov as a previous error not related to SimpleCov has been detected") if print_error_status
|
225
|
+
Kernel.exit(exit_status)
|
226
|
+
end
|
213
227
|
|
214
|
-
|
228
|
+
# @api private
|
229
|
+
def ready_to_process_results?
|
230
|
+
final_result_process? && result?
|
231
|
+
end
|
215
232
|
|
216
|
-
|
217
|
-
|
218
|
-
exit_status = SimpleCov.process_result(SimpleCov.result, exit_status) if SimpleCov.result?
|
233
|
+
def process_results_and_report_error
|
234
|
+
exit_status = process_result(result)
|
219
235
|
|
220
236
|
# Force exit with stored status (see github issue #5)
|
221
|
-
|
222
|
-
|
223
|
-
$stderr.printf("SimpleCov failed with exit %<exit_status>d\n", exit_status: exit_status) if print_error_status
|
237
|
+
if exit_status.positive?
|
238
|
+
warn("SimpleCov failed with exit #{exit_status} due to a coverage related error") if print_error_status
|
224
239
|
Kernel.exit exit_status
|
225
240
|
end
|
226
241
|
end
|
@@ -230,55 +245,29 @@ module SimpleCov
|
|
230
245
|
# Usage:
|
231
246
|
# exit_status = SimpleCov.process_result(SimpleCov.result, exit_status)
|
232
247
|
#
|
233
|
-
def process_result(result
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
result_exit_status = result_exit_status(result, covered_percent)
|
238
|
-
write_last_run(covered_percent) if result_exit_status == SimpleCov::ExitCodes::SUCCESS # No result errors
|
239
|
-
final_result_process? ? result_exit_status : SimpleCov::ExitCodes::SUCCESS
|
248
|
+
def process_result(result)
|
249
|
+
result_exit_status = result_exit_status(result)
|
250
|
+
write_last_run(result) if result_exit_status == SimpleCov::ExitCodes::SUCCESS
|
251
|
+
result_exit_status
|
240
252
|
end
|
241
253
|
|
242
254
|
# @api private
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
$stderr.printf(
|
252
|
-
"File (%<file>s) is only (%<least_covered_percentage>.2f%%) covered. This is below the expected minimum coverage per file of (%<min_coverage>.2f%%).\n",
|
253
|
-
file: result.least_covered_file,
|
254
|
-
least_covered_percentage: covered_percentages.min,
|
255
|
-
min_coverage: SimpleCov.minimum_coverage_by_file
|
256
|
-
)
|
257
|
-
SimpleCov::ExitCodes::MINIMUM_COVERAGE
|
258
|
-
elsif (last_run = SimpleCov::LastRun.read)
|
259
|
-
coverage_diff = last_run[:result][:covered_percent] - covered_percent
|
260
|
-
if coverage_diff > SimpleCov.maximum_coverage_drop
|
261
|
-
$stderr.printf(
|
262
|
-
"Coverage has dropped by %<drop_percent>.2f%% since the last time (maximum allowed: %<max_drop>.2f%%).\n",
|
263
|
-
drop_percent: coverage_diff,
|
264
|
-
max_drop: SimpleCov.maximum_coverage_drop
|
265
|
-
)
|
266
|
-
SimpleCov::ExitCodes::MAXIMUM_COVERAGE_DROP
|
267
|
-
else
|
268
|
-
SimpleCov::ExitCodes::SUCCESS
|
269
|
-
end
|
270
|
-
else
|
271
|
-
SimpleCov::ExitCodes::SUCCESS
|
272
|
-
end
|
255
|
+
CoverageLimits = Struct.new(:minimum_coverage, :minimum_coverage_by_file, :maximum_coverage_drop, keyword_init: true)
|
256
|
+
def result_exit_status(result)
|
257
|
+
coverage_limits = CoverageLimits.new(
|
258
|
+
minimum_coverage: minimum_coverage, minimum_coverage_by_file: minimum_coverage_by_file,
|
259
|
+
maximum_coverage_drop: maximum_coverage_drop
|
260
|
+
)
|
261
|
+
|
262
|
+
ExitCodes::ExitCodeHandling.call(result, coverage_limits: coverage_limits)
|
273
263
|
end
|
274
|
-
# rubocop:enable Metrics/MethodLength
|
275
264
|
|
276
265
|
#
|
277
266
|
# @api private
|
278
267
|
#
|
279
268
|
def final_result_process?
|
280
|
-
# checking for ENV["TEST_ENV_NUMBER"] to determine if the
|
281
|
-
!defined?(ParallelTests) || !ENV["TEST_ENV_NUMBER"] || ParallelTests.
|
269
|
+
# checking for ENV["TEST_ENV_NUMBER"] to determine if the tests are being run in parallel
|
270
|
+
!defined?(ParallelTests) || !ENV["TEST_ENV_NUMBER"] || ParallelTests.last_process?
|
282
271
|
end
|
283
272
|
|
284
273
|
#
|
@@ -293,8 +282,19 @@ module SimpleCov
|
|
293
282
|
#
|
294
283
|
# @api private
|
295
284
|
#
|
296
|
-
def write_last_run(
|
297
|
-
SimpleCov::LastRun.write(result:
|
285
|
+
def write_last_run(result)
|
286
|
+
SimpleCov::LastRun.write(result:
|
287
|
+
result.coverage_statistics.transform_values do |stats|
|
288
|
+
round_coverage(stats.percent)
|
289
|
+
end)
|
290
|
+
end
|
291
|
+
|
292
|
+
#
|
293
|
+
# @api private
|
294
|
+
#
|
295
|
+
# Rounding down to be extra strict, see #679
|
296
|
+
def round_coverage(coverage)
|
297
|
+
coverage.floor(2)
|
298
298
|
end
|
299
299
|
|
300
300
|
private
|
@@ -315,7 +315,7 @@ module SimpleCov
|
|
315
315
|
# This blog post gives a good run down of the coverage criterias introduced
|
316
316
|
# in Ruby 2.5: https://blog.bigbinary.com/2018/04/11/ruby-2-5-supports-measuring-branch-and-method-coverages.html
|
317
317
|
# There is also a nice writeup of the different coverage criteria made in this
|
318
|
-
# comment https://github.com/
|
318
|
+
# comment https://github.com/simplecov-ruby/simplecov/pull/692#discussion_r281836176 :
|
319
319
|
# Ruby < 2.5:
|
320
320
|
# https://github.com/ruby/ruby/blob/v1_9_3_374/ext/coverage/coverage.c
|
321
321
|
# traditional mode (Array)
|
@@ -342,7 +342,7 @@ module SimpleCov
|
|
342
342
|
if coverage_start_arguments_supported?
|
343
343
|
start_coverage_with_criteria
|
344
344
|
else
|
345
|
-
Coverage.start
|
345
|
+
Coverage.start unless Coverage.running?
|
346
346
|
end
|
347
347
|
end
|
348
348
|
|
@@ -351,7 +351,9 @@ module SimpleCov
|
|
351
351
|
[lookup_corresponding_ruby_coverage_name(criterion), true]
|
352
352
|
end.to_h
|
353
353
|
|
354
|
-
|
354
|
+
start_arguments[:eval] = true if coverage_for_eval_enabled?
|
355
|
+
|
356
|
+
Coverage.start(start_arguments) unless Coverage.running?
|
355
357
|
end
|
356
358
|
|
357
359
|
CRITERION_TO_RUBY_COVERAGE = {
|
@@ -419,61 +421,50 @@ module SimpleCov
|
|
419
421
|
@result = SimpleCov::Result.new(add_not_loaded_files(@result))
|
420
422
|
end
|
421
423
|
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
minimum_expected: percent,
|
427
|
-
actual: result.coverage_statistics[criterion].percent
|
428
|
-
}
|
429
|
-
end
|
424
|
+
# parallel_tests isn't always available, see: https://github.com/grosser/parallel_tests/issues/772
|
425
|
+
def make_parallel_tests_available
|
426
|
+
return if defined?(ParallelTests)
|
427
|
+
return unless probably_running_parallel_tests?
|
430
428
|
|
431
|
-
|
432
|
-
|
433
|
-
|
429
|
+
require "parallel_tests"
|
430
|
+
rescue LoadError
|
431
|
+
warn("SimpleCov guessed you were running inside parallel tests but couldn't load it. Please file a bug report with us!")
|
434
432
|
end
|
435
433
|
|
436
|
-
def
|
437
|
-
|
438
|
-
$stderr.printf(
|
439
|
-
"%<criterion>s coverage (%<covered>.2f%%) is below the expected minimum coverage (%<minimum_coverage>.2f%%).\n",
|
440
|
-
covered: violation.fetch(:actual).floor(2),
|
441
|
-
minimum_coverage: violation.fetch(:minimum_expected),
|
442
|
-
criterion: violation.fetch(:criterion).capitalize
|
443
|
-
)
|
444
|
-
end
|
434
|
+
def probably_running_parallel_tests?
|
435
|
+
ENV["TEST_ENV_NUMBER"] && ENV["PARALLEL_TEST_GROUPS"]
|
445
436
|
end
|
446
437
|
end
|
447
438
|
end
|
448
439
|
|
449
|
-
|
440
|
+
# requires are down here here for a load order reason I'm not sure what it is about
|
450
441
|
require "set"
|
451
442
|
require "forwardable"
|
452
|
-
|
443
|
+
require_relative "simplecov/configuration"
|
453
444
|
SimpleCov.extend SimpleCov::Configuration
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
445
|
+
require_relative "simplecov/coverage_statistics"
|
446
|
+
require_relative "simplecov/exit_codes"
|
447
|
+
require_relative "simplecov/profiles"
|
448
|
+
require_relative "simplecov/source_file/line"
|
449
|
+
require_relative "simplecov/source_file/branch"
|
450
|
+
require_relative "simplecov/source_file"
|
451
|
+
require_relative "simplecov/file_list"
|
452
|
+
require_relative "simplecov/result"
|
453
|
+
require_relative "simplecov/filter"
|
454
|
+
require_relative "simplecov/formatter"
|
455
|
+
require_relative "simplecov/last_run"
|
456
|
+
require_relative "simplecov/lines_classifier"
|
457
|
+
require_relative "simplecov/result_merger"
|
458
|
+
require_relative "simplecov/command_guesser"
|
459
|
+
require_relative "simplecov/version"
|
460
|
+
require_relative "simplecov/result_adapter"
|
461
|
+
require_relative "simplecov/combine"
|
462
|
+
require_relative "simplecov/combine/branches_combiner"
|
463
|
+
require_relative "simplecov/combine/files_combiner"
|
464
|
+
require_relative "simplecov/combine/lines_combiner"
|
465
|
+
require_relative "simplecov/combine/results_combiner"
|
466
|
+
require_relative "simplecov/useless_results_remover"
|
467
|
+
require_relative "simplecov/simulate_coverage"
|
477
468
|
|
478
469
|
# Load default config
|
479
|
-
|
470
|
+
require_relative "simplecov/defaults" unless ENV["SIMPLECOV_NO_DEFAULTS"]
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simplecov
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.22.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christoph Olszowka
|
8
|
-
|
8
|
+
- Tobias Pfeiffer
|
9
|
+
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2022-12-23 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: docile
|
@@ -38,18 +39,30 @@ dependencies:
|
|
38
39
|
- - "~>"
|
39
40
|
- !ruby/object:Gem::Version
|
40
41
|
version: '0.11'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: simplecov_json_formatter
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0.1'
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0.1'
|
41
56
|
description: Code coverage for Ruby with a powerful configuration library and automatic
|
42
57
|
merging of coverage across test suites
|
43
58
|
email:
|
44
59
|
- christoph at olszowka de
|
60
|
+
- pragtob@gmail.com
|
45
61
|
executables: []
|
46
62
|
extensions: []
|
47
63
|
extra_rdoc_files: []
|
48
64
|
files:
|
49
65
|
- CHANGELOG.md
|
50
|
-
- CODE_OF_CONDUCT.md
|
51
|
-
- CONTRIBUTING.md
|
52
|
-
- ISSUE_TEMPLATE.md
|
53
66
|
- LICENSE
|
54
67
|
- README.md
|
55
68
|
- doc/alternate-formatters.md
|
@@ -65,8 +78,13 @@ files:
|
|
65
78
|
- lib/simplecov/command_guesser.rb
|
66
79
|
- lib/simplecov/configuration.rb
|
67
80
|
- lib/simplecov/coverage_statistics.rb
|
81
|
+
- lib/simplecov/default_formatter.rb
|
68
82
|
- lib/simplecov/defaults.rb
|
69
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
|
70
88
|
- lib/simplecov/file_list.rb
|
71
89
|
- lib/simplecov/filter.rb
|
72
90
|
- lib/simplecov/formatter.rb
|
@@ -76,6 +94,7 @@ files:
|
|
76
94
|
- lib/simplecov/lines_classifier.rb
|
77
95
|
- lib/simplecov/load_global_config.rb
|
78
96
|
- lib/simplecov/no_defaults.rb
|
97
|
+
- lib/simplecov/process.rb
|
79
98
|
- lib/simplecov/profiles.rb
|
80
99
|
- lib/simplecov/profiles/bundler_filter.rb
|
81
100
|
- lib/simplecov/profiles/hidden_filter.rb
|
@@ -91,16 +110,16 @@ files:
|
|
91
110
|
- lib/simplecov/source_file/line.rb
|
92
111
|
- lib/simplecov/useless_results_remover.rb
|
93
112
|
- lib/simplecov/version.rb
|
94
|
-
homepage: https://github.com/
|
113
|
+
homepage: https://github.com/simplecov-ruby/simplecov
|
95
114
|
licenses:
|
96
115
|
- MIT
|
97
116
|
metadata:
|
98
|
-
bug_tracker_uri: https://github.com/
|
99
|
-
changelog_uri: https://github.com/
|
100
|
-
documentation_uri: https://www.rubydoc.info/gems/simplecov/0.
|
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.22.0
|
101
120
|
mailing_list_uri: https://groups.google.com/forum/#!forum/simplecov
|
102
|
-
source_code_uri: https://github.com/
|
103
|
-
post_install_message:
|
121
|
+
source_code_uri: https://github.com/simplecov-ruby/simplecov/tree/v0.22.0
|
122
|
+
post_install_message:
|
104
123
|
rdoc_options: []
|
105
124
|
require_paths:
|
106
125
|
- lib
|
@@ -108,15 +127,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
108
127
|
requirements:
|
109
128
|
- - ">="
|
110
129
|
- !ruby/object:Gem::Version
|
111
|
-
version: 2.
|
130
|
+
version: 2.5.0
|
112
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
132
|
requirements:
|
114
133
|
- - ">="
|
115
134
|
- !ruby/object:Gem::Version
|
116
135
|
version: '0'
|
117
136
|
requirements: []
|
118
|
-
rubygems_version: 3.
|
119
|
-
signing_key:
|
137
|
+
rubygems_version: 3.3.7
|
138
|
+
signing_key:
|
120
139
|
specification_version: 4
|
121
140
|
summary: Code coverage for Ruby
|
122
141
|
test_files: []
|
data/CODE_OF_CONDUCT.md
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
# SimpleCov Code of Conduct
|
2
|
-
|
3
|
-
## Our Pledge
|
4
|
-
|
5
|
-
In the interest of fostering an open and welcoming environment, we as
|
6
|
-
contributors and maintainers pledge to making participation in our project and
|
7
|
-
our community a harassment-free experience for everyone, regardless of age, body
|
8
|
-
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
9
|
-
level of experience, education, socio-economic status, nationality, personal
|
10
|
-
appearance, race, religion, or sexual identity and orientation.
|
11
|
-
|
12
|
-
## Our Standards
|
13
|
-
|
14
|
-
Examples of behavior that contributes to creating a positive environment
|
15
|
-
include:
|
16
|
-
|
17
|
-
* Using welcoming and inclusive language
|
18
|
-
* Being respectful of differing viewpoints and experiences
|
19
|
-
* Gracefully accepting constructive criticism
|
20
|
-
* Focusing on what is best for the community
|
21
|
-
* Showing empathy towards other community members
|
22
|
-
|
23
|
-
Examples of unacceptable behavior by participants include:
|
24
|
-
|
25
|
-
* The use of sexualized language or imagery and unwelcome sexual attention or
|
26
|
-
advances
|
27
|
-
* Trolling, insulting/derogatory comments, and personal or political attacks
|
28
|
-
* Public or private harassment
|
29
|
-
* Publishing others' private information, such as a physical or electronic
|
30
|
-
address, without explicit permission
|
31
|
-
* Other conduct which could reasonably be considered inappropriate in a
|
32
|
-
professional setting
|
33
|
-
|
34
|
-
## Our Responsibilities
|
35
|
-
|
36
|
-
Project maintainers are responsible for clarifying the standards of acceptable
|
37
|
-
behavior and are expected to take appropriate and fair corrective action in
|
38
|
-
response to any instances of unacceptable behavior.
|
39
|
-
|
40
|
-
Project maintainers have the right and responsibility to remove, edit, or
|
41
|
-
reject comments, commits, code, wiki edits, issues, and other contributions
|
42
|
-
that are not aligned to this Code of Conduct, or to ban temporarily or
|
43
|
-
permanently any contributor for other behaviors that they deem inappropriate,
|
44
|
-
threatening, offensive, or harmful.
|
45
|
-
|
46
|
-
## Scope
|
47
|
-
|
48
|
-
This Code of Conduct applies both within project spaces and in public spaces
|
49
|
-
when an individual is representing the project or its community. Examples of
|
50
|
-
representing a project or community include using an official project e-mail
|
51
|
-
address, posting via an official social media account, or acting as an appointed
|
52
|
-
representative at an online or offline event. Representation of a project may be
|
53
|
-
further defined and clarified by project maintainers.
|
54
|
-
|
55
|
-
## Enforcement
|
56
|
-
|
57
|
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
58
|
-
reported by contacting the project team at simplecov.team@gmail.com. All
|
59
|
-
complaints will be reviewed and investigated and will result in a response that
|
60
|
-
is deemed necessary and appropriate to the circumstances. The project team is
|
61
|
-
obligated to maintain confidentiality with regard to the reporter of an incident.
|
62
|
-
Further details of specific enforcement policies may be posted separately.
|
63
|
-
|
64
|
-
Project maintainers who do not follow or enforce the Code of Conduct in good
|
65
|
-
faith may face temporary or permanent repercussions as determined by other
|
66
|
-
members of the project's leadership.
|
67
|
-
|
68
|
-
## Attribution
|
69
|
-
|
70
|
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
71
|
-
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
72
|
-
|
73
|
-
[homepage]: https://www.contributor-covenant.org
|
74
|
-
|
75
|
-
For answers to common questions about this code of conduct, see
|
76
|
-
https://www.contributor-covenant.org/faq
|