covered 0.28.5 → 0.29.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
- checksums.yaml.gz.sig +0 -0
- data/lib/covered/capture.rb +36 -6
- data/lib/covered/config.rb +1 -3
- data/lib/covered/coverage.rb +2 -2
- data/lib/covered/forks.rb +15 -11
- data/lib/covered/version.rb +1 -1
- data/readme.md +4 -0
- data/releases.md +4 -0
- data.tar.gz.sig +0 -0
- metadata +15 -1
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4d29a2eaa9fe3d3c29ea8a111f6375b193e81fc38b7edd2a33df00c47ede4e46
|
|
4
|
+
data.tar.gz: 1625f3a42082d69c7b4f47b8b639f51f07ccfe32d27efd2bcb5cd630b49360cb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1a61d788de7508e8e7d7179d11e61ffb898d7c422ff75d452433db10ce4b9b01002f7384fc4bf3558413c6648690a722f07dd240894eb914a44b080a8a961a11
|
|
7
|
+
data.tar.gz: 57defb22ee94b826c68af5869faadba29a0b0a0ec32a524b61e2d0b8b5805740f3cee29c43ad4736d7de90de40e0e08b66f99dfe099511c5769780e2dca60f48
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/lib/covered/capture.rb
CHANGED
|
@@ -5,23 +5,36 @@
|
|
|
5
5
|
|
|
6
6
|
require_relative "wrapper"
|
|
7
7
|
|
|
8
|
-
require "coverage"
|
|
8
|
+
require "ruby/coverage"
|
|
9
9
|
|
|
10
10
|
module Covered
|
|
11
11
|
# Captures Ruby coverage data and forwards it to another coverage output.
|
|
12
12
|
class Capture < Wrapper
|
|
13
|
+
# Initialize capture with independent tracer state.
|
|
14
|
+
def initialize(...)
|
|
15
|
+
super
|
|
16
|
+
|
|
17
|
+
@tracer = nil
|
|
18
|
+
@files = {}
|
|
19
|
+
end
|
|
20
|
+
|
|
13
21
|
# Start Ruby coverage collection.
|
|
14
22
|
def start
|
|
15
23
|
super
|
|
16
24
|
|
|
17
|
-
|
|
25
|
+
@files = {}
|
|
26
|
+
@tracer = build_tracer
|
|
27
|
+
@tracer.start
|
|
18
28
|
end
|
|
19
29
|
|
|
20
30
|
# Clear any collected coverage data without stopping coverage.
|
|
21
31
|
def clear
|
|
22
32
|
super
|
|
23
33
|
|
|
24
|
-
|
|
34
|
+
@tracer&.stop
|
|
35
|
+
@files = {}
|
|
36
|
+
@tracer = build_tracer
|
|
37
|
+
@tracer.start
|
|
25
38
|
end
|
|
26
39
|
|
|
27
40
|
EVAL_PATHS = {
|
|
@@ -33,22 +46,25 @@ module Covered
|
|
|
33
46
|
# Stop coverage collection and add the collected results to the output.
|
|
34
47
|
# Ignores Ruby's anonymous eval paths and files that no longer exist.
|
|
35
48
|
def finish
|
|
36
|
-
|
|
49
|
+
@tracer&.stop
|
|
37
50
|
|
|
38
|
-
|
|
51
|
+
@files.each do |path, lines|
|
|
39
52
|
next if EVAL_PATHS.include?(path)
|
|
40
53
|
|
|
41
54
|
path = self.expand_path(path)
|
|
42
55
|
|
|
43
56
|
# Skip files which don't exist. This can happen if `eval` is used with an invalid/incorrect path:
|
|
44
57
|
if File.exist?(path)
|
|
45
|
-
@output.mark(path,
|
|
58
|
+
@output.mark(path, 0, lines)
|
|
46
59
|
else
|
|
47
60
|
# warn "Skipping coverage for #{path.inspect} because it doesn't exist!"
|
|
48
61
|
# Ignore.
|
|
49
62
|
end
|
|
50
63
|
end
|
|
51
64
|
|
|
65
|
+
@tracer = nil
|
|
66
|
+
@files = {}
|
|
67
|
+
|
|
52
68
|
super
|
|
53
69
|
end
|
|
54
70
|
|
|
@@ -63,5 +79,19 @@ module Covered
|
|
|
63
79
|
ensure
|
|
64
80
|
finish
|
|
65
81
|
end
|
|
82
|
+
|
|
83
|
+
private
|
|
84
|
+
|
|
85
|
+
def build_tracer
|
|
86
|
+
::Ruby::Coverage::Tracer.new do |path, iseq|
|
|
87
|
+
@files[path] ||= begin
|
|
88
|
+
lines = []
|
|
89
|
+
::Ruby::Coverage.executable_lines(iseq).each do |line|
|
|
90
|
+
lines[line] = 0
|
|
91
|
+
end
|
|
92
|
+
lines
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
66
96
|
end
|
|
67
97
|
end
|
data/lib/covered/config.rb
CHANGED
data/lib/covered/coverage.rb
CHANGED
|
@@ -84,10 +84,10 @@ module Covered
|
|
|
84
84
|
# @parameter line_number [Integer] The first line number to mark.
|
|
85
85
|
# @parameter value [Integer | Array(Integer)] The execution count or counts to add.
|
|
86
86
|
def mark(line_number, value = 1)
|
|
87
|
-
# As currently implemented, @counts is base-zero rather than base-one.
|
|
88
|
-
# Line numbers generally start at line 1, so the first line, line 1, is at index 1. This means that index[0] is usually nil.
|
|
89
87
|
Array(value).each_with_index do |value, index|
|
|
90
88
|
offset = line_number + index
|
|
89
|
+
next if offset < 1
|
|
90
|
+
|
|
91
91
|
if @counts[offset]
|
|
92
92
|
@counts[offset] += value
|
|
93
93
|
else
|
data/lib/covered/forks.rb
CHANGED
|
@@ -17,7 +17,7 @@ module Covered
|
|
|
17
17
|
|
|
18
18
|
# Stop tracking coverage and remove the fork handler state.
|
|
19
19
|
def finish
|
|
20
|
-
Handler.finish
|
|
20
|
+
Handler.finish(self)
|
|
21
21
|
|
|
22
22
|
super
|
|
23
23
|
end
|
|
@@ -27,26 +27,30 @@ module Covered
|
|
|
27
27
|
LOCK = Mutex.new
|
|
28
28
|
|
|
29
29
|
class << self
|
|
30
|
-
#
|
|
31
|
-
|
|
30
|
+
# The currently registered coverage wrapper.
|
|
31
|
+
# @returns [Covered::Forks | Nil]
|
|
32
|
+
def coverage
|
|
33
|
+
LOCK.synchronize do
|
|
34
|
+
@coverages&.last
|
|
35
|
+
end
|
|
36
|
+
end
|
|
32
37
|
|
|
33
38
|
# Register coverage for fork handling.
|
|
34
39
|
# @parameter coverage [Covered::Forks] The coverage wrapper to use in forked children.
|
|
35
|
-
# @raises [ArgumentError] If coverage is already registered.
|
|
36
40
|
def start(coverage)
|
|
37
41
|
LOCK.synchronize do
|
|
38
|
-
|
|
39
|
-
raise ArgumentError, "Coverage is already being tracked!"
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
@coverage = coverage
|
|
42
|
+
(@coverages ||= []) << coverage
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
# Clear the registered coverage.
|
|
47
|
-
def finish
|
|
47
|
+
def finish(coverage = nil)
|
|
48
48
|
LOCK.synchronize do
|
|
49
|
-
|
|
49
|
+
if coverage
|
|
50
|
+
@coverages&.delete(coverage)
|
|
51
|
+
else
|
|
52
|
+
@coverages&.pop
|
|
53
|
+
end
|
|
50
54
|
end
|
|
51
55
|
end
|
|
52
56
|
|
data/lib/covered/version.rb
CHANGED
data/readme.md
CHANGED
|
@@ -34,6 +34,10 @@ Please see the [project documentation](https://socketry.github.io/covered/) for
|
|
|
34
34
|
|
|
35
35
|
Please see the [project releases](https://socketry.github.io/covered/releases/index) for all releases.
|
|
36
36
|
|
|
37
|
+
### v0.29.0
|
|
38
|
+
|
|
39
|
+
- Prefer `ruby-coverage` over `coverage` for improved coverage tracking.
|
|
40
|
+
|
|
37
41
|
### v0.28.5
|
|
38
42
|
|
|
39
43
|
- Make coverage validation quiet when no reports are configured.
|
data/releases.md
CHANGED
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: covered
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.29.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Samuel Williams
|
|
@@ -73,6 +73,20 @@ dependencies:
|
|
|
73
73
|
- - "~>"
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
75
|
version: '1.0'
|
|
76
|
+
- !ruby/object:Gem::Dependency
|
|
77
|
+
name: ruby-coverage
|
|
78
|
+
requirement: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0.1'
|
|
83
|
+
type: :runtime
|
|
84
|
+
prerelease: false
|
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0.1'
|
|
76
90
|
executables: []
|
|
77
91
|
extensions: []
|
|
78
92
|
extra_rdoc_files: []
|
metadata.gz.sig
CHANGED
|
Binary file
|