simplecov 0.17.0 → 0.18.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 +76 -1
- data/CODE_OF_CONDUCT.md +76 -0
- data/README.md +265 -76
- data/doc/alternate-formatters.md +5 -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/combine.rb +30 -0
- data/lib/simplecov/command_guesser.rb +6 -3
- data/lib/simplecov/configuration.rb +110 -9
- data/lib/simplecov/coverage_statistics.rb +56 -0
- data/lib/simplecov/defaults.rb +4 -2
- data/lib/simplecov/file_list.rb +66 -13
- data/lib/simplecov/filter.rb +2 -1
- data/lib/simplecov/formatter/multi_formatter.rb +2 -2
- data/lib/simplecov/formatter/simple_formatter.rb +4 -4
- data/lib/simplecov/last_run.rb +3 -1
- data/lib/simplecov/lines_classifier.rb +2 -2
- data/lib/simplecov/profiles.rb +9 -7
- data/lib/simplecov/result.rb +39 -6
- data/lib/simplecov/result_adapter.rb +30 -0
- data/lib/simplecov/result_merger.rb +18 -11
- data/lib/simplecov/simulate_coverage.rb +29 -0
- data/lib/simplecov/source_file/branch.rb +84 -0
- data/lib/simplecov/source_file/line.rb +72 -0
- data/lib/simplecov/source_file.rb +222 -125
- data/lib/simplecov/useless_results_remover.rb +16 -0
- data/lib/simplecov/version.rb +1 -1
- data/lib/simplecov.rb +227 -62
- metadata +32 -166
- 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
data/lib/simplecov.rb
CHANGED
|
@@ -2,9 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "English"
|
|
4
4
|
|
|
5
|
-
#
|
|
6
|
-
# Code coverage for ruby 1.9. Please check out README for a full introduction.
|
|
7
|
-
#
|
|
8
5
|
# Coverage may be inaccurate under JRUBY.
|
|
9
6
|
if defined?(JRUBY_VERSION) && defined?(JRuby)
|
|
10
7
|
|
|
@@ -20,6 +17,10 @@ if defined?(JRUBY_VERSION) && defined?(JRuby)
|
|
|
20
17
|
' or set the "debug.fullTrace=true" option in your .jrubyrc'
|
|
21
18
|
end
|
|
22
19
|
end
|
|
20
|
+
|
|
21
|
+
#
|
|
22
|
+
# Code coverage for ruby. Please check out README for a full introduction.
|
|
23
|
+
#
|
|
23
24
|
module SimpleCov
|
|
24
25
|
class << self
|
|
25
26
|
attr_accessor :running
|
|
@@ -44,35 +45,49 @@ module SimpleCov
|
|
|
44
45
|
# Please check out the RDoc for SimpleCov::Configuration to find about available config options
|
|
45
46
|
#
|
|
46
47
|
def start(profile = nil, &block)
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
Coverage.start
|
|
54
|
-
else
|
|
55
|
-
warn "WARNING: SimpleCov is activated, but you're not running Ruby 1.9+ - no coverage analysis will happen"
|
|
56
|
-
warn "Starting with SimpleCov 1.0.0, even no-op compatibility with Ruby <= 1.8 will be entirely dropped."
|
|
57
|
-
false
|
|
58
|
-
end
|
|
48
|
+
require "coverage"
|
|
49
|
+
initial_setup(profile, &block)
|
|
50
|
+
@result = nil
|
|
51
|
+
self.pid = Process.pid
|
|
52
|
+
|
|
53
|
+
start_coverage_measurement
|
|
59
54
|
end
|
|
60
55
|
|
|
61
56
|
#
|
|
62
|
-
#
|
|
63
|
-
#
|
|
57
|
+
# Collate a series of SimpleCov result files into a single SimpleCov output.
|
|
58
|
+
# You can optionally specify configuration with a block:
|
|
59
|
+
# SimpleCov.collate Dir["simplecov-resultset-*/.resultset.json"]
|
|
60
|
+
# OR
|
|
61
|
+
# SimpleCov.collate Dir["simplecov-resultset-*/.resultset.json"], 'rails' # using rails profile
|
|
62
|
+
# OR
|
|
63
|
+
# SimpleCov.collate Dir["simplecov-resultset-*/.resultset.json"] do
|
|
64
|
+
# add_filter 'test'
|
|
65
|
+
# end
|
|
66
|
+
# OR
|
|
67
|
+
# SimpleCov.collate Dir["simplecov-resultset-*/.resultset.json"], 'rails' do
|
|
68
|
+
# add_filter 'test'
|
|
69
|
+
# end
|
|
64
70
|
#
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
71
|
+
# Please check out the RDoc for SimpleCov::Configuration to find about
|
|
72
|
+
# available config options, or checkout the README for more in-depth
|
|
73
|
+
# information about coverage collation
|
|
74
|
+
#
|
|
75
|
+
def collate(result_filenames, profile = nil, &block)
|
|
76
|
+
raise "There's no reports to be merged" if result_filenames.empty?
|
|
70
77
|
|
|
71
|
-
|
|
78
|
+
initial_setup(profile, &block)
|
|
79
|
+
|
|
80
|
+
results = result_filenames.flat_map do |filename|
|
|
81
|
+
# Re-create each included instance of SimpleCov::Result from the stored run data.
|
|
82
|
+
(JSON.parse(File.read(filename)) || {}).map do |command_name, coverage|
|
|
83
|
+
SimpleCov::Result.from_hash(command_name => coverage)
|
|
72
84
|
end
|
|
73
85
|
end
|
|
74
86
|
|
|
75
|
-
result
|
|
87
|
+
# Use the ResultMerger to produce a single, merged result, ready to use.
|
|
88
|
+
@result = SimpleCov::ResultMerger.merge_and_store(*results)
|
|
89
|
+
|
|
90
|
+
run_exit_tasks!
|
|
76
91
|
end
|
|
77
92
|
|
|
78
93
|
#
|
|
@@ -83,9 +98,8 @@ module SimpleCov
|
|
|
83
98
|
return @result if result?
|
|
84
99
|
|
|
85
100
|
# Collect our coverage result
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
end
|
|
101
|
+
|
|
102
|
+
process_coverage_result if running
|
|
89
103
|
|
|
90
104
|
# If we're using merging of results, store the current result
|
|
91
105
|
# first (if there is one), then merge the results and return those
|
|
@@ -147,22 +161,6 @@ module SimpleCov
|
|
|
147
161
|
load_profile(name)
|
|
148
162
|
end
|
|
149
163
|
|
|
150
|
-
#
|
|
151
|
-
# Checks whether we're on a proper version of Ruby (likely 1.9+) which
|
|
152
|
-
# provides coverage support
|
|
153
|
-
#
|
|
154
|
-
def usable?
|
|
155
|
-
return @usable if defined?(@usable) && !@usable.nil?
|
|
156
|
-
|
|
157
|
-
@usable = begin
|
|
158
|
-
require "coverage"
|
|
159
|
-
require "simplecov/jruby_fix"
|
|
160
|
-
true
|
|
161
|
-
rescue LoadError
|
|
162
|
-
false
|
|
163
|
-
end
|
|
164
|
-
end
|
|
165
|
-
|
|
166
164
|
#
|
|
167
165
|
# Clear out the previously cached .result. Primarily useful in testing
|
|
168
166
|
#
|
|
@@ -196,6 +194,8 @@ module SimpleCov
|
|
|
196
194
|
# Called from at_exit block
|
|
197
195
|
#
|
|
198
196
|
def run_exit_tasks!
|
|
197
|
+
set_exit_exception
|
|
198
|
+
|
|
199
199
|
exit_status = SimpleCov.exit_status_from_exception
|
|
200
200
|
|
|
201
201
|
SimpleCov.at_exit.call
|
|
@@ -206,8 +206,8 @@ module SimpleCov
|
|
|
206
206
|
|
|
207
207
|
# Force exit with stored status (see github issue #5)
|
|
208
208
|
# unless it's nil or 0 (see github issue #281)
|
|
209
|
-
if exit_status
|
|
210
|
-
$stderr.printf("SimpleCov failed with exit
|
|
209
|
+
if exit_status&.positive?
|
|
210
|
+
$stderr.printf("SimpleCov failed with exit %<exit_status>d\n", exit_status: exit_status) if print_error_status
|
|
211
211
|
Kernel.exit exit_status
|
|
212
212
|
end
|
|
213
213
|
end
|
|
@@ -220,11 +220,9 @@ module SimpleCov
|
|
|
220
220
|
def process_result(result, exit_status)
|
|
221
221
|
return exit_status if exit_status != SimpleCov::ExitCodes::SUCCESS # Existing errors
|
|
222
222
|
|
|
223
|
-
covered_percent = result.covered_percent.
|
|
223
|
+
covered_percent = result.covered_percent.floor(2)
|
|
224
224
|
result_exit_status = result_exit_status(result, covered_percent)
|
|
225
|
-
if result_exit_status == SimpleCov::ExitCodes::SUCCESS # No result errors
|
|
226
|
-
write_last_run(covered_percent)
|
|
227
|
-
end
|
|
225
|
+
write_last_run(covered_percent) if result_exit_status == SimpleCov::ExitCodes::SUCCESS # No result errors
|
|
228
226
|
final_result_process? ? result_exit_status : SimpleCov::ExitCodes::SUCCESS
|
|
229
227
|
end
|
|
230
228
|
|
|
@@ -232,17 +230,26 @@ module SimpleCov
|
|
|
232
230
|
#
|
|
233
231
|
# rubocop:disable Metrics/MethodLength
|
|
234
232
|
def result_exit_status(result, covered_percent)
|
|
235
|
-
covered_percentages = result.covered_percentages.map { |percentage| percentage.
|
|
236
|
-
if
|
|
237
|
-
|
|
233
|
+
covered_percentages = result.covered_percentages.map { |percentage| percentage.floor(2) }
|
|
234
|
+
if (minimum_violations = minimum_coverage_violated(result)).any?
|
|
235
|
+
report_minimum_violated(minimum_violations)
|
|
238
236
|
SimpleCov::ExitCodes::MINIMUM_COVERAGE
|
|
239
237
|
elsif covered_percentages.any? { |p| p < SimpleCov.minimum_coverage_by_file }
|
|
240
|
-
$stderr.printf(
|
|
238
|
+
$stderr.printf(
|
|
239
|
+
"File (%<file>s) is only (%<least_covered_percentage>.2f%%) covered. This is below the expected minimum coverage per file of (%<min_coverage>.2f%%).\n",
|
|
240
|
+
file: result.least_covered_file,
|
|
241
|
+
least_covered_percentage: covered_percentages.min,
|
|
242
|
+
min_coverage: SimpleCov.minimum_coverage_by_file
|
|
243
|
+
)
|
|
241
244
|
SimpleCov::ExitCodes::MINIMUM_COVERAGE
|
|
242
245
|
elsif (last_run = SimpleCov::LastRun.read)
|
|
243
|
-
coverage_diff = last_run[
|
|
246
|
+
coverage_diff = last_run[:result][:covered_percent] - covered_percent
|
|
244
247
|
if coverage_diff > SimpleCov.maximum_coverage_drop
|
|
245
|
-
$stderr.printf(
|
|
248
|
+
$stderr.printf(
|
|
249
|
+
"Coverage has dropped by %<drop_percent>.2f%% since the last time (maximum allowed: %<max_drop>.2f%%).\n",
|
|
250
|
+
drop_percent: coverage_diff,
|
|
251
|
+
max_drop: SimpleCov.maximum_coverage_drop
|
|
252
|
+
)
|
|
246
253
|
SimpleCov::ExitCodes::MAXIMUM_COVERAGE_DROP
|
|
247
254
|
else
|
|
248
255
|
SimpleCov::ExitCodes::SUCCESS
|
|
@@ -257,7 +264,8 @@ module SimpleCov
|
|
|
257
264
|
# @api private
|
|
258
265
|
#
|
|
259
266
|
def final_result_process?
|
|
260
|
-
|
|
267
|
+
# checking for ENV["TEST_ENV_NUMBER"] to determine if the tess are being run in parallel
|
|
268
|
+
!defined?(ParallelTests) || !ENV["TEST_ENV_NUMBER"] || ParallelTests.number_of_running_processes <= 1
|
|
261
269
|
end
|
|
262
270
|
|
|
263
271
|
#
|
|
@@ -265,6 +273,7 @@ module SimpleCov
|
|
|
265
273
|
#
|
|
266
274
|
def wait_for_other_processes
|
|
267
275
|
return unless defined?(ParallelTests) && final_result_process?
|
|
276
|
+
|
|
268
277
|
ParallelTests.wait_for_other_processes_to_finish
|
|
269
278
|
end
|
|
270
279
|
|
|
@@ -272,16 +281,168 @@ module SimpleCov
|
|
|
272
281
|
# @api private
|
|
273
282
|
#
|
|
274
283
|
def write_last_run(covered_percent)
|
|
275
|
-
SimpleCov::LastRun.write(:
|
|
284
|
+
SimpleCov::LastRun.write(result: {covered_percent: covered_percent})
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
private
|
|
288
|
+
|
|
289
|
+
def initial_setup(profile, &block)
|
|
290
|
+
load_profile(profile) if profile
|
|
291
|
+
configure(&block) if block_given?
|
|
292
|
+
self.running = true
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
#
|
|
296
|
+
# Trigger Coverage.start depends on given config coverage_criterion
|
|
297
|
+
#
|
|
298
|
+
# With Positive branch it supports all coverage measurement types
|
|
299
|
+
# With Negative branch it supports only line coverage measurement type
|
|
300
|
+
#
|
|
301
|
+
def start_coverage_measurement
|
|
302
|
+
# This blog post gives a good run down of the coverage criterias introduced
|
|
303
|
+
# in Ruby 2.5: https://blog.bigbinary.com/2018/04/11/ruby-2-5-supports-measuring-branch-and-method-coverages.html
|
|
304
|
+
# There is also a nice writeup of the different coverage criteria made in this
|
|
305
|
+
# comment https://github.com/colszowka/simplecov/pull/692#discussion_r281836176 :
|
|
306
|
+
# Ruby < 2.5:
|
|
307
|
+
# https://github.com/ruby/ruby/blob/v1_9_3_374/ext/coverage/coverage.c
|
|
308
|
+
# traditional mode (Array)
|
|
309
|
+
#
|
|
310
|
+
# Ruby 2.5:
|
|
311
|
+
# https://bugs.ruby-lang.org/issues/13901
|
|
312
|
+
# https://github.com/ruby/ruby/blob/v2_5_3/ext/coverage/coverage.c
|
|
313
|
+
# default: traditional/compatible mode (Array)
|
|
314
|
+
# :lines - like traditional mode but using Hash
|
|
315
|
+
# :branches
|
|
316
|
+
# :methods
|
|
317
|
+
# :all - same as lines + branches + methods
|
|
318
|
+
#
|
|
319
|
+
# Ruby >= 2.6:
|
|
320
|
+
# https://bugs.ruby-lang.org/issues/15022
|
|
321
|
+
# https://github.com/ruby/ruby/blob/v2_6_3/ext/coverage/coverage.c
|
|
322
|
+
# default: traditional/compatible mode (Array)
|
|
323
|
+
# :lines - like traditional mode but using Hash
|
|
324
|
+
# :branches
|
|
325
|
+
# :methods
|
|
326
|
+
# :oneshot_lines - can not be combined with lines
|
|
327
|
+
# :all - same as lines + branches + methods
|
|
328
|
+
#
|
|
329
|
+
if coverage_start_arguments_supported?
|
|
330
|
+
start_coverage_with_criteria
|
|
331
|
+
else
|
|
332
|
+
Coverage.start
|
|
333
|
+
end
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
def start_coverage_with_criteria
|
|
337
|
+
start_arguments = coverage_criteria.map do |criterion|
|
|
338
|
+
[lookup_corresponding_ruby_coverage_name(criterion), true]
|
|
339
|
+
end.to_h
|
|
340
|
+
|
|
341
|
+
Coverage.start(start_arguments)
|
|
342
|
+
end
|
|
343
|
+
|
|
344
|
+
CRITERION_TO_RUBY_COVERAGE = {
|
|
345
|
+
branch: :branches,
|
|
346
|
+
line: :lines
|
|
347
|
+
}.freeze
|
|
348
|
+
def lookup_corresponding_ruby_coverage_name(criterion)
|
|
349
|
+
CRITERION_TO_RUBY_COVERAGE.fetch(criterion)
|
|
350
|
+
end
|
|
351
|
+
|
|
352
|
+
#
|
|
353
|
+
# Finds files that were to be tracked but were not loaded and initializes
|
|
354
|
+
# the line-by-line coverage to zero (if relevant) or nil (comments / whitespace etc).
|
|
355
|
+
#
|
|
356
|
+
def add_not_loaded_files(result)
|
|
357
|
+
if tracked_files
|
|
358
|
+
result = result.dup
|
|
359
|
+
Dir[tracked_files].each do |file|
|
|
360
|
+
absolute_path = File.expand_path(file)
|
|
361
|
+
result[absolute_path] ||= SimulateCoverage.call(absolute_path)
|
|
362
|
+
end
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
result
|
|
366
|
+
end
|
|
367
|
+
|
|
368
|
+
#
|
|
369
|
+
# Call steps that handle process coverage result
|
|
370
|
+
#
|
|
371
|
+
# @return [Hash]
|
|
372
|
+
#
|
|
373
|
+
def process_coverage_result
|
|
374
|
+
adapt_coverage_result
|
|
375
|
+
remove_useless_results
|
|
376
|
+
result_with_not_loaded_files
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
#
|
|
380
|
+
# Unite the result so it wouldn't matter what coverage type was called
|
|
381
|
+
#
|
|
382
|
+
# @return [Hash]
|
|
383
|
+
#
|
|
384
|
+
def adapt_coverage_result
|
|
385
|
+
@result = SimpleCov::ResultAdapter.call(Coverage.result)
|
|
386
|
+
end
|
|
387
|
+
|
|
388
|
+
#
|
|
389
|
+
# Filter coverage result
|
|
390
|
+
# The result before filter also has result of coverage for files
|
|
391
|
+
# are not related to the project like loaded gems coverage.
|
|
392
|
+
#
|
|
393
|
+
# @return [Hash]
|
|
394
|
+
#
|
|
395
|
+
def remove_useless_results
|
|
396
|
+
@result = SimpleCov::UselessResultsRemover.call(@result)
|
|
397
|
+
end
|
|
398
|
+
|
|
399
|
+
#
|
|
400
|
+
# Initialize result with files that are not included by coverage
|
|
401
|
+
# and added inside the config block
|
|
402
|
+
#
|
|
403
|
+
# @return [Hash]
|
|
404
|
+
#
|
|
405
|
+
def result_with_not_loaded_files
|
|
406
|
+
@result = SimpleCov::Result.new(add_not_loaded_files(@result))
|
|
407
|
+
end
|
|
408
|
+
|
|
409
|
+
def minimum_coverage_violated(result)
|
|
410
|
+
coverage_achieved = minimum_coverage.map do |criterion, percent|
|
|
411
|
+
{
|
|
412
|
+
criterion: criterion,
|
|
413
|
+
minimum_expected: percent,
|
|
414
|
+
actual: result.coverage_statistics[criterion].percent
|
|
415
|
+
}
|
|
416
|
+
end
|
|
417
|
+
|
|
418
|
+
coverage_achieved.select do |achieved|
|
|
419
|
+
achieved.fetch(:actual) < achieved.fetch(:minimum_expected)
|
|
420
|
+
end
|
|
421
|
+
end
|
|
422
|
+
|
|
423
|
+
def report_minimum_violated(violations)
|
|
424
|
+
violations.each do |violation|
|
|
425
|
+
$stderr.printf(
|
|
426
|
+
"%<criterion>s coverage (%<covered>.2f%%) is below the expected minimum coverage (%<minimum_coverage>.2f%%).\n",
|
|
427
|
+
covered: violation.fetch(:actual).floor(2),
|
|
428
|
+
minimum_coverage: violation.fetch(:minimum_expected),
|
|
429
|
+
criterion: violation.fetch(:criterion).capitalize
|
|
430
|
+
)
|
|
431
|
+
end
|
|
276
432
|
end
|
|
277
433
|
end
|
|
278
434
|
end
|
|
279
435
|
|
|
280
436
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__)))
|
|
437
|
+
require "set"
|
|
438
|
+
require "forwardable"
|
|
281
439
|
require "simplecov/configuration"
|
|
282
|
-
SimpleCov.
|
|
440
|
+
SimpleCov.extend SimpleCov::Configuration
|
|
441
|
+
require "simplecov/coverage_statistics"
|
|
283
442
|
require "simplecov/exit_codes"
|
|
284
443
|
require "simplecov/profiles"
|
|
444
|
+
require "simplecov/source_file/line"
|
|
445
|
+
require "simplecov/source_file/branch"
|
|
285
446
|
require "simplecov/source_file"
|
|
286
447
|
require "simplecov/file_list"
|
|
287
448
|
require "simplecov/result"
|
|
@@ -289,13 +450,17 @@ require "simplecov/filter"
|
|
|
289
450
|
require "simplecov/formatter"
|
|
290
451
|
require "simplecov/last_run"
|
|
291
452
|
require "simplecov/lines_classifier"
|
|
292
|
-
require "simplecov/raw_coverage"
|
|
293
453
|
require "simplecov/result_merger"
|
|
294
454
|
require "simplecov/command_guesser"
|
|
295
455
|
require "simplecov/version"
|
|
456
|
+
require "simplecov/result_adapter"
|
|
457
|
+
require "simplecov/combine"
|
|
458
|
+
require "simplecov/combine/branches_combiner"
|
|
459
|
+
require "simplecov/combine/files_combiner"
|
|
460
|
+
require "simplecov/combine/lines_combiner"
|
|
461
|
+
require "simplecov/combine/results_combiner"
|
|
462
|
+
require "simplecov/useless_results_remover"
|
|
463
|
+
require "simplecov/simulate_coverage"
|
|
296
464
|
|
|
297
465
|
# Load default config
|
|
298
466
|
require "simplecov/defaults" unless ENV["SIMPLECOV_NO_DEFAULTS"]
|
|
299
|
-
|
|
300
|
-
# Load Rails integration (only for Rails 3, see #113)
|
|
301
|
-
require "simplecov/railtie" if defined? Rails::Railtie
|
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.
|
|
4
|
+
version: 0.18.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Christoph Olszowka
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2020-01-28 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:
|
|
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:
|
|
180
|
-
type: :
|
|
33
|
+
version: 0.11.0
|
|
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:
|
|
187
|
-
description: Code coverage for Ruby
|
|
188
|
-
|
|
40
|
+
version: 0.11.0
|
|
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
|
|
@@ -201,8 +56,14 @@ files:
|
|
|
201
56
|
- doc/commercial-services.md
|
|
202
57
|
- doc/editor-integration.md
|
|
203
58
|
- lib/simplecov.rb
|
|
59
|
+
- lib/simplecov/combine.rb
|
|
60
|
+
- lib/simplecov/combine/branches_combiner.rb
|
|
61
|
+
- lib/simplecov/combine/files_combiner.rb
|
|
62
|
+
- lib/simplecov/combine/lines_combiner.rb
|
|
63
|
+
- lib/simplecov/combine/results_combiner.rb
|
|
204
64
|
- lib/simplecov/command_guesser.rb
|
|
205
65
|
- lib/simplecov/configuration.rb
|
|
66
|
+
- lib/simplecov/coverage_statistics.rb
|
|
206
67
|
- lib/simplecov/defaults.rb
|
|
207
68
|
- lib/simplecov/exit_codes.rb
|
|
208
69
|
- lib/simplecov/file_list.rb
|
|
@@ -210,7 +71,6 @@ files:
|
|
|
210
71
|
- lib/simplecov/formatter.rb
|
|
211
72
|
- lib/simplecov/formatter/multi_formatter.rb
|
|
212
73
|
- lib/simplecov/formatter/simple_formatter.rb
|
|
213
|
-
- lib/simplecov/jruby_fix.rb
|
|
214
74
|
- lib/simplecov/last_run.rb
|
|
215
75
|
- lib/simplecov/lines_classifier.rb
|
|
216
76
|
- lib/simplecov/load_global_config.rb
|
|
@@ -221,17 +81,24 @@ files:
|
|
|
221
81
|
- lib/simplecov/profiles/rails.rb
|
|
222
82
|
- lib/simplecov/profiles/root_filter.rb
|
|
223
83
|
- lib/simplecov/profiles/test_frameworks.rb
|
|
224
|
-
- lib/simplecov/railtie.rb
|
|
225
|
-
- lib/simplecov/railties/tasks.rake
|
|
226
|
-
- lib/simplecov/raw_coverage.rb
|
|
227
84
|
- lib/simplecov/result.rb
|
|
85
|
+
- lib/simplecov/result_adapter.rb
|
|
228
86
|
- lib/simplecov/result_merger.rb
|
|
87
|
+
- lib/simplecov/simulate_coverage.rb
|
|
229
88
|
- lib/simplecov/source_file.rb
|
|
89
|
+
- lib/simplecov/source_file/branch.rb
|
|
90
|
+
- lib/simplecov/source_file/line.rb
|
|
91
|
+
- lib/simplecov/useless_results_remover.rb
|
|
230
92
|
- lib/simplecov/version.rb
|
|
231
|
-
homepage:
|
|
93
|
+
homepage: https://github.com/colszowka/simplecov
|
|
232
94
|
licenses:
|
|
233
95
|
- MIT
|
|
234
|
-
metadata:
|
|
96
|
+
metadata:
|
|
97
|
+
bug_tracker_uri: https://github.com/colszowka/simplecov/issues
|
|
98
|
+
changelog_uri: https://github.com/colszowka/simplecov/blob/master/CHANGELOG.md
|
|
99
|
+
documentation_uri: https://www.rubydoc.info/gems/simplecov/0.18.0
|
|
100
|
+
mailing_list_uri: https://groups.google.com/forum/#!forum/simplecov
|
|
101
|
+
source_code_uri: https://github.com/colszowka/simplecov/tree/v0.18.0
|
|
235
102
|
post_install_message:
|
|
236
103
|
rdoc_options: []
|
|
237
104
|
require_paths:
|
|
@@ -240,16 +107,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
240
107
|
requirements:
|
|
241
108
|
- - ">="
|
|
242
109
|
- !ruby/object:Gem::Version
|
|
243
|
-
version:
|
|
110
|
+
version: 2.4.0
|
|
244
111
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
245
112
|
requirements:
|
|
246
113
|
- - ">="
|
|
247
114
|
- !ruby/object:Gem::Version
|
|
248
115
|
version: '0'
|
|
249
116
|
requirements: []
|
|
250
|
-
rubygems_version: 3.
|
|
117
|
+
rubygems_version: 3.1.2
|
|
251
118
|
signing_key:
|
|
252
119
|
specification_version: 4
|
|
253
|
-
summary: Code coverage for Ruby
|
|
254
|
-
merging of coverage across test suites
|
|
120
|
+
summary: Code coverage for Ruby
|
|
255
121
|
test_files: []
|