deep-cover 0.1.14 → 0.1.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +227 -0
- data/Gemfile +5 -2
- data/Rakefile +9 -6
- data/bin/console +3 -3
- data/bin/cov +8 -8
- data/bin/gemcov +2 -2
- data/bin/selfcov +5 -5
- data/bin/test_gems +11 -10
- data/bin/testall +6 -6
- data/deep_cover.gemspec +26 -21
- data/exe/deep-cover +1 -0
- data/lib/deep-cover.rb +2 -0
- data/lib/deep_cover.rb +3 -0
- data/lib/deep_cover/analyser.rb +2 -0
- data/lib/deep_cover/analyser/base.rb +2 -0
- data/lib/deep_cover/analyser/branch.rb +4 -2
- data/lib/deep_cover/analyser/covered_code_source.rb +3 -1
- data/lib/deep_cover/analyser/function.rb +3 -1
- data/lib/deep_cover/analyser/ignore_uncovered.rb +6 -4
- data/lib/deep_cover/analyser/node.rb +3 -0
- data/lib/deep_cover/analyser/optionally_covered.rb +12 -7
- data/lib/deep_cover/analyser/per_char.rb +7 -6
- data/lib/deep_cover/analyser/per_line.rb +9 -8
- data/lib/deep_cover/analyser/statement.rb +2 -0
- data/lib/deep_cover/analyser/subset.rb +4 -1
- data/lib/deep_cover/auto_run.rb +3 -0
- data/lib/deep_cover/autoload_tracker.rb +6 -3
- data/lib/deep_cover/backports.rb +2 -0
- data/lib/deep_cover/base.rb +11 -2
- data/lib/deep_cover/builtin_takeover.rb +2 -0
- data/lib/deep_cover/cli/debugger.rb +55 -30
- data/lib/deep_cover/cli/deep_cover.rb +17 -11
- data/lib/deep_cover/cli/instrumented_clone_reporter.rb +16 -14
- data/lib/deep_cover/config.rb +29 -16
- data/lib/deep_cover/core_ext/autoload_overrides.rb +2 -0
- data/lib/deep_cover/core_ext/coverage_replacement.rb +2 -0
- data/lib/deep_cover/core_ext/load_overrides.rb +5 -6
- data/lib/deep_cover/core_ext/require_overrides.rb +6 -7
- data/lib/deep_cover/coverage.rb +21 -18
- data/lib/deep_cover/covered_code.rb +22 -12
- data/lib/deep_cover/custom_requirer.rb +82 -35
- data/lib/deep_cover/memoize.rb +48 -0
- data/lib/deep_cover/module_override.rb +2 -0
- data/lib/deep_cover/node.rb +14 -1
- data/lib/deep_cover/node/arguments.rb +2 -0
- data/lib/deep_cover/node/assignments.rb +32 -30
- data/lib/deep_cover/node/base.rb +30 -29
- data/lib/deep_cover/node/begin.rb +3 -1
- data/lib/deep_cover/node/block.rb +5 -2
- data/lib/deep_cover/node/branch.rb +2 -1
- data/lib/deep_cover/node/case.rb +15 -13
- data/lib/deep_cover/node/collections.rb +2 -0
- data/lib/deep_cover/node/const.rb +2 -0
- data/lib/deep_cover/node/def.rb +10 -8
- data/lib/deep_cover/node/empty_body.rb +2 -0
- data/lib/deep_cover/node/exceptions.rb +3 -1
- data/lib/deep_cover/node/if.rb +3 -1
- data/lib/deep_cover/node/keywords.rb +4 -2
- data/lib/deep_cover/node/literals.rb +2 -0
- data/lib/deep_cover/node/loops.rb +5 -3
- data/lib/deep_cover/node/mixin/can_augment_children.rb +8 -7
- data/lib/deep_cover/node/mixin/check_completion.rb +3 -1
- data/lib/deep_cover/node/mixin/child_can_be_empty.rb +4 -2
- data/lib/deep_cover/node/mixin/executed_after_children.rb +2 -0
- data/lib/deep_cover/node/mixin/execution_location.rb +4 -2
- data/lib/deep_cover/node/mixin/flow_accounting.rb +2 -0
- data/lib/deep_cover/node/mixin/has_child.rb +22 -18
- data/lib/deep_cover/node/mixin/has_child_handler.rb +10 -8
- data/lib/deep_cover/node/mixin/has_tracker.rb +4 -2
- data/lib/deep_cover/node/mixin/is_statement.rb +3 -1
- data/lib/deep_cover/node/mixin/rewriting.rb +5 -3
- data/lib/deep_cover/node/mixin/wrapper.rb +2 -0
- data/lib/deep_cover/node/module.rb +11 -9
- data/lib/deep_cover/node/root.rb +2 -0
- data/lib/deep_cover/node/send.rb +4 -2
- data/lib/deep_cover/node/short_circuit.rb +4 -2
- data/lib/deep_cover/node/splat.rb +2 -0
- data/lib/deep_cover/node/variables.rb +2 -0
- data/lib/deep_cover/parser_ext/range.rb +3 -1
- data/lib/deep_cover/problem_with_diagnostic.rb +11 -9
- data/lib/deep_cover/reporter.rb +2 -0
- data/lib/deep_cover/reporter/istanbul.rb +28 -24
- data/lib/deep_cover/tools.rb +2 -0
- data/lib/deep_cover/tools/builtin_coverage.rb +6 -4
- data/lib/deep_cover/tools/camelize.rb +3 -1
- data/lib/deep_cover/tools/dasherize.rb +3 -1
- data/lib/deep_cover/tools/dump_covered_code.rb +7 -6
- data/lib/deep_cover/tools/execute_sample.rb +13 -13
- data/lib/deep_cover/tools/format.rb +3 -1
- data/lib/deep_cover/tools/format_char_cover.rb +4 -2
- data/lib/deep_cover/tools/format_generated_code.rb +3 -1
- data/lib/deep_cover/tools/number_lines.rb +2 -0
- data/lib/deep_cover/tools/our_coverage.rb +5 -3
- data/lib/deep_cover/tools/profiling.rb +66 -0
- data/lib/deep_cover/tools/require_relative_dir.rb +3 -1
- data/lib/deep_cover/tools/silence_warnings.rb +4 -1
- data/lib/deep_cover/tools/slice.rb +3 -1
- data/lib/deep_cover/tools/truncate_backtrace.rb +2 -0
- data/lib/deep_cover/version.rb +3 -1
- metadata +47 -30
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module DeepCover
|
2
4
|
module Tools::Camelize
|
3
5
|
# Poor man's camelize. 'an_example' => 'AnExample'
|
4
6
|
def camelize(string)
|
5
|
-
string.to_s.gsub(/([a-z\d]*)[_?!]?/){
|
7
|
+
string.to_s.gsub(/([a-z\d]*)[_?!]?/) { Regexp.last_match(1).capitalize }
|
6
8
|
end
|
7
9
|
end
|
8
10
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module DeepCover
|
2
4
|
silence_warnings do
|
3
5
|
require 'with_progress'
|
@@ -14,9 +16,8 @@ module DeepCover
|
|
14
16
|
dest_path = File.join(File.expand_path(dest_path), '')
|
15
17
|
root_path = Pathname.new(root_path)
|
16
18
|
skipped = []
|
17
|
-
file_paths = Dir.glob("#{source_path}**/*.rb").select{|p| File.file?(p) }
|
19
|
+
file_paths = Dir.glob("#{source_path}**/*.rb").select { |p| File.file?(p) }
|
18
20
|
file_paths.each.with_progress(title: 'Rewriting') do |path|
|
19
|
-
|
20
21
|
new_path = Pathname(path.gsub(source_path, dest_path))
|
21
22
|
begin
|
22
23
|
covered_code = coverage.covered_code(path, name: new_path.relative_path_from(root_path))
|
@@ -29,10 +30,10 @@ module DeepCover
|
|
29
30
|
end
|
30
31
|
unless skipped.empty?
|
31
32
|
warn [
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
"#{skipped.size} files could not be instrumented because of syntax errors:",
|
34
|
+
*skipped.first(3),
|
35
|
+
('...' if skipped.size > 3),
|
36
|
+
].compact.join("\n")
|
36
37
|
end
|
37
38
|
dest_path
|
38
39
|
end
|
@@ -1,23 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module DeepCover
|
2
4
|
module Tools::ExecuteSample
|
3
5
|
# Returns true if the code would have continued, false if the rescue was triggered.
|
4
6
|
def execute_sample(to_execute)
|
5
7
|
# Disable some annoying warning by ruby. We are testing edge cases, so warnings are to be expected.
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
to_execute.call
|
12
|
-
end
|
8
|
+
Tools.silence_warnings do
|
9
|
+
if to_execute.is_a?(CoveredCode)
|
10
|
+
to_execute.execute_code
|
11
|
+
else
|
12
|
+
to_execute.call
|
13
13
|
end
|
14
|
-
true
|
15
|
-
rescue RuntimeError => e
|
16
|
-
# In our samples, a simple `raise` doesn't need to be rescued
|
17
|
-
# Other exceptions are not rescued
|
18
|
-
raise unless e.message.empty?
|
19
|
-
false
|
20
14
|
end
|
15
|
+
true
|
16
|
+
rescue RuntimeError => e
|
17
|
+
# In our samples, a simple `raise` doesn't need to be rescued
|
18
|
+
# Other exceptions are not rescued
|
19
|
+
raise unless e.message.empty?
|
20
|
+
false
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module DeepCover
|
2
4
|
module Tools::Format
|
3
5
|
CONVERT = Hash.new(' ')
|
@@ -6,7 +8,7 @@ module DeepCover
|
|
6
8
|
|
7
9
|
def format(*results, filename: nil, source: nil)
|
8
10
|
source ||= File.read(filename)
|
9
|
-
results.map!{|counts| counts.map{|c| CONVERT[c]}}
|
11
|
+
results.map! { |counts| counts.map { |c| CONVERT[c] } }
|
10
12
|
[*results, source.lines].transpose.map do |parts|
|
11
13
|
*line_results, line = parts
|
12
14
|
Term::ANSIColor.white(line_results.join) + line.to_s
|
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module DeepCover
|
2
4
|
module Tools::FormatCharCover
|
3
|
-
COLOR = {'x' => :red, ' ' => :green, '-' => :faint}
|
4
|
-
WHITESPACE_MAP = Hash.new{|_, v| v}.merge!(' ' => '·', "\t" => '→ ')
|
5
|
+
COLOR = {'x' => :red, ' ' => :green, '-' => :faint}.freeze
|
6
|
+
WHITESPACE_MAP = Hash.new { |_, v| v }.merge!(' ' => '·', "\t" => '→ ')
|
5
7
|
def format_char_cover(covered_code, show_whitespace: false, **options)
|
6
8
|
bc = covered_code.char_cover(**options)
|
7
9
|
covered_code.buffer.source_lines.map.with_index do |line, line_index|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module DeepCover
|
2
4
|
module Tools::FormatGeneratedCode
|
3
5
|
def format_generated_code(covered_code)
|
@@ -7,7 +9,7 @@ module DeepCover
|
|
7
9
|
Term::ANSIColor.yellow(inserted)
|
8
10
|
end
|
9
11
|
|
10
|
-
inserts = inserts.sort_by{|exp, _| [exp.line, exp.column]}.reverse
|
12
|
+
inserts = inserts.sort_by { |exp, _| [exp.line, exp.column] }.reverse
|
11
13
|
generated_lines = generated_code.split("\n")
|
12
14
|
|
13
15
|
inserts.each do |exp_limit, size|
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module DeepCover
|
2
|
-
module Tools::
|
4
|
+
module Tools::OurCoverage
|
3
5
|
def our_coverage(source, fn, lineno, **options)
|
4
|
-
covered_code = CoveredCode.new(source:source, path: fn, lineno: lineno)
|
6
|
+
covered_code = CoveredCode.new(source: source, path: fn, lineno: lineno)
|
5
7
|
Tools.execute_sample(covered_code)
|
6
|
-
covered_code.line_coverage(options)[(lineno-1)..-1]
|
8
|
+
covered_code.line_coverage(options)[(lineno - 1)..-1]
|
7
9
|
end
|
8
10
|
end
|
9
11
|
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DeepCover
|
4
|
+
module Tools::Profiling
|
5
|
+
# Simple forwarding to implementation
|
6
|
+
def start
|
7
|
+
profiler.start
|
8
|
+
end
|
9
|
+
|
10
|
+
def stop
|
11
|
+
@results = profiler.stop
|
12
|
+
end
|
13
|
+
|
14
|
+
def pause
|
15
|
+
profiler.pause
|
16
|
+
end
|
17
|
+
|
18
|
+
def resume
|
19
|
+
profiler.resume
|
20
|
+
end
|
21
|
+
|
22
|
+
def report
|
23
|
+
profiler.report(@results)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Basic utilities using forwarding methods
|
27
|
+
def profile(do_start = true)
|
28
|
+
return yield unless do_start
|
29
|
+
start
|
30
|
+
yield
|
31
|
+
stop
|
32
|
+
report
|
33
|
+
end
|
34
|
+
|
35
|
+
def dont_profile
|
36
|
+
pause if profiler_loaded?
|
37
|
+
yield
|
38
|
+
ensure
|
39
|
+
resume if profiler_loaded?
|
40
|
+
end
|
41
|
+
|
42
|
+
def profiler_loaded?
|
43
|
+
!!@profiler
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
# Dependency injection
|
49
|
+
def profiler
|
50
|
+
@profiler = RubyProfProfiler.new
|
51
|
+
end
|
52
|
+
|
53
|
+
class RubyProfProfiler < SimpleDelegator
|
54
|
+
def initialize
|
55
|
+
raise 'Profiling is not available when using JRuby' if RUBY_PLATFORM == 'java'
|
56
|
+
require 'ruby-prof'
|
57
|
+
super(RubyProf)
|
58
|
+
end
|
59
|
+
|
60
|
+
def report(results)
|
61
|
+
printer = RubyProf::GraphPrinter.new(results)
|
62
|
+
printer.print(STDOUT, {})
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module DeepCover
|
2
4
|
module Tools::RequireRelativeDir
|
3
5
|
def require_relative_dir(dir_name, except: [])
|
4
|
-
dir = File.dirname(caller.first.partition(/\.rb:\d/).first)
|
6
|
+
dir = File.dirname(caller(1..1).first.partition(/\.rb:\d/).first)
|
5
7
|
Dir["#{dir}/#{dir_name}/*.rb"].sort.each do |file|
|
6
8
|
require file unless except.include? File.basename(file, '.rb')
|
7
9
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module DeepCover
|
2
4
|
module Tools::SilenceWarnings
|
3
5
|
# copied from: activesupport/lib/active_support/core_ext/kernel/reporting.rb
|
@@ -6,7 +8,8 @@ module DeepCover
|
|
6
8
|
end
|
7
9
|
|
8
10
|
def with_warnings(flag)
|
9
|
-
old_verbose
|
11
|
+
old_verbose = $VERBOSE
|
12
|
+
$VERBOSE = flag
|
10
13
|
yield
|
11
14
|
ensure
|
12
15
|
$VERBOSE = old_verbose
|
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module DeepCover
|
2
4
|
module Tools::Slice
|
3
5
|
def slice(hash, *keys)
|
4
|
-
keys.each_with_object(
|
6
|
+
keys.each_with_object({}) { |k, h| h[k] = hash[k] if hash.has_key?(k) }
|
5
7
|
end
|
6
8
|
end
|
7
9
|
end
|
data/lib/deep_cover/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deep-cover
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marc-André Lafortune
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-11-
|
12
|
+
date: 2017-11-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: parser
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
57
|
+
name: highline
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - ">="
|
@@ -68,21 +68,21 @@ dependencies:
|
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
71
|
+
name: slop
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - "
|
74
|
+
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '0'
|
76
|
+
version: '4.0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- - "
|
81
|
+
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: '0'
|
83
|
+
version: '4.0'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
|
-
name:
|
85
|
+
name: term-ansicolor
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
88
|
- - ">="
|
@@ -96,19 +96,19 @@ dependencies:
|
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '0'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
|
-
name:
|
99
|
+
name: with_progress
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
|
-
- - "
|
102
|
+
- - ">="
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: '
|
104
|
+
version: '0'
|
105
105
|
type: :runtime
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
|
-
- - "
|
109
|
+
- - ">="
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version: '
|
111
|
+
version: '0'
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
113
|
name: pry
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,6 +123,20 @@ dependencies:
|
|
123
123
|
- - ">="
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: activesupport
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - "~>"
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '4.0'
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - "~>"
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '4.0'
|
126
140
|
- !ruby/object:Gem::Dependency
|
127
141
|
name: bundler
|
128
142
|
requirement: !ruby/object:Gem::Requirement
|
@@ -138,62 +152,62 @@ dependencies:
|
|
138
152
|
- !ruby/object:Gem::Version
|
139
153
|
version: '1.15'
|
140
154
|
- !ruby/object:Gem::Dependency
|
141
|
-
name:
|
155
|
+
name: psych
|
142
156
|
requirement: !ruby/object:Gem::Requirement
|
143
157
|
requirements:
|
144
|
-
- - "
|
158
|
+
- - ">="
|
145
159
|
- !ruby/object:Gem::Version
|
146
|
-
version: '
|
160
|
+
version: '2.0'
|
147
161
|
type: :development
|
148
162
|
prerelease: false
|
149
163
|
version_requirements: !ruby/object:Gem::Requirement
|
150
164
|
requirements:
|
151
|
-
- - "
|
165
|
+
- - ">="
|
152
166
|
- !ruby/object:Gem::Version
|
153
|
-
version: '
|
167
|
+
version: '2.0'
|
154
168
|
- !ruby/object:Gem::Dependency
|
155
|
-
name:
|
169
|
+
name: rake
|
156
170
|
requirement: !ruby/object:Gem::Requirement
|
157
171
|
requirements:
|
158
172
|
- - "~>"
|
159
173
|
- !ruby/object:Gem::Version
|
160
|
-
version: '
|
174
|
+
version: '10.0'
|
161
175
|
type: :development
|
162
176
|
prerelease: false
|
163
177
|
version_requirements: !ruby/object:Gem::Requirement
|
164
178
|
requirements:
|
165
179
|
- - "~>"
|
166
180
|
- !ruby/object:Gem::Version
|
167
|
-
version: '
|
181
|
+
version: '10.0'
|
168
182
|
- !ruby/object:Gem::Dependency
|
169
|
-
name:
|
183
|
+
name: rspec
|
170
184
|
requirement: !ruby/object:Gem::Requirement
|
171
185
|
requirements:
|
172
186
|
- - "~>"
|
173
187
|
- !ruby/object:Gem::Version
|
174
|
-
version: '
|
188
|
+
version: '3.0'
|
175
189
|
type: :development
|
176
190
|
prerelease: false
|
177
191
|
version_requirements: !ruby/object:Gem::Requirement
|
178
192
|
requirements:
|
179
193
|
- - "~>"
|
180
194
|
- !ruby/object:Gem::Version
|
181
|
-
version: '
|
195
|
+
version: '3.0'
|
182
196
|
- !ruby/object:Gem::Dependency
|
183
|
-
name:
|
197
|
+
name: rubocop
|
184
198
|
requirement: !ruby/object:Gem::Requirement
|
185
199
|
requirements:
|
186
200
|
- - ">="
|
187
201
|
- !ruby/object:Gem::Version
|
188
|
-
version: '
|
202
|
+
version: '0'
|
189
203
|
type: :development
|
190
204
|
prerelease: false
|
191
205
|
version_requirements: !ruby/object:Gem::Requirement
|
192
206
|
requirements:
|
193
207
|
- - ">="
|
194
208
|
- !ruby/object:Gem::Version
|
195
|
-
version: '
|
196
|
-
description:
|
209
|
+
version: '0'
|
210
|
+
description: expression and branch coverage for Ruby.
|
197
211
|
email:
|
198
212
|
- github@marc-andre.ca
|
199
213
|
- hunter_spawn@hotmail.com
|
@@ -204,6 +218,7 @@ extra_rdoc_files: []
|
|
204
218
|
files:
|
205
219
|
- ".gitignore"
|
206
220
|
- ".rspec"
|
221
|
+
- ".rubocop.yml"
|
207
222
|
- ".travis.yml"
|
208
223
|
- CODE_OF_CONDUCT.md
|
209
224
|
- CONTRIBUTING.md
|
@@ -251,6 +266,7 @@ files:
|
|
251
266
|
- lib/deep_cover/coverage.rb
|
252
267
|
- lib/deep_cover/covered_code.rb
|
253
268
|
- lib/deep_cover/custom_requirer.rb
|
269
|
+
- lib/deep_cover/memoize.rb
|
254
270
|
- lib/deep_cover/module_override.rb
|
255
271
|
- lib/deep_cover/node.rb
|
256
272
|
- lib/deep_cover/node/arguments.rb
|
@@ -302,6 +318,7 @@ files:
|
|
302
318
|
- lib/deep_cover/tools/format_generated_code.rb
|
303
319
|
- lib/deep_cover/tools/number_lines.rb
|
304
320
|
- lib/deep_cover/tools/our_coverage.rb
|
321
|
+
- lib/deep_cover/tools/profiling.rb
|
305
322
|
- lib/deep_cover/tools/require_relative_dir.rb
|
306
323
|
- lib/deep_cover/tools/silence_warnings.rb
|
307
324
|
- lib/deep_cover/tools/slice.rb
|
@@ -330,5 +347,5 @@ rubyforge_project:
|
|
330
347
|
rubygems_version: 2.6.14
|
331
348
|
signing_key:
|
332
349
|
specification_version: 4
|
333
|
-
summary:
|
350
|
+
summary: In depth coverage of your Ruby code.
|
334
351
|
test_files: []
|