deep-cover 0.1.14 → 0.1.15

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 (101) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +227 -0
  3. data/Gemfile +5 -2
  4. data/Rakefile +9 -6
  5. data/bin/console +3 -3
  6. data/bin/cov +8 -8
  7. data/bin/gemcov +2 -2
  8. data/bin/selfcov +5 -5
  9. data/bin/test_gems +11 -10
  10. data/bin/testall +6 -6
  11. data/deep_cover.gemspec +26 -21
  12. data/exe/deep-cover +1 -0
  13. data/lib/deep-cover.rb +2 -0
  14. data/lib/deep_cover.rb +3 -0
  15. data/lib/deep_cover/analyser.rb +2 -0
  16. data/lib/deep_cover/analyser/base.rb +2 -0
  17. data/lib/deep_cover/analyser/branch.rb +4 -2
  18. data/lib/deep_cover/analyser/covered_code_source.rb +3 -1
  19. data/lib/deep_cover/analyser/function.rb +3 -1
  20. data/lib/deep_cover/analyser/ignore_uncovered.rb +6 -4
  21. data/lib/deep_cover/analyser/node.rb +3 -0
  22. data/lib/deep_cover/analyser/optionally_covered.rb +12 -7
  23. data/lib/deep_cover/analyser/per_char.rb +7 -6
  24. data/lib/deep_cover/analyser/per_line.rb +9 -8
  25. data/lib/deep_cover/analyser/statement.rb +2 -0
  26. data/lib/deep_cover/analyser/subset.rb +4 -1
  27. data/lib/deep_cover/auto_run.rb +3 -0
  28. data/lib/deep_cover/autoload_tracker.rb +6 -3
  29. data/lib/deep_cover/backports.rb +2 -0
  30. data/lib/deep_cover/base.rb +11 -2
  31. data/lib/deep_cover/builtin_takeover.rb +2 -0
  32. data/lib/deep_cover/cli/debugger.rb +55 -30
  33. data/lib/deep_cover/cli/deep_cover.rb +17 -11
  34. data/lib/deep_cover/cli/instrumented_clone_reporter.rb +16 -14
  35. data/lib/deep_cover/config.rb +29 -16
  36. data/lib/deep_cover/core_ext/autoload_overrides.rb +2 -0
  37. data/lib/deep_cover/core_ext/coverage_replacement.rb +2 -0
  38. data/lib/deep_cover/core_ext/load_overrides.rb +5 -6
  39. data/lib/deep_cover/core_ext/require_overrides.rb +6 -7
  40. data/lib/deep_cover/coverage.rb +21 -18
  41. data/lib/deep_cover/covered_code.rb +22 -12
  42. data/lib/deep_cover/custom_requirer.rb +82 -35
  43. data/lib/deep_cover/memoize.rb +48 -0
  44. data/lib/deep_cover/module_override.rb +2 -0
  45. data/lib/deep_cover/node.rb +14 -1
  46. data/lib/deep_cover/node/arguments.rb +2 -0
  47. data/lib/deep_cover/node/assignments.rb +32 -30
  48. data/lib/deep_cover/node/base.rb +30 -29
  49. data/lib/deep_cover/node/begin.rb +3 -1
  50. data/lib/deep_cover/node/block.rb +5 -2
  51. data/lib/deep_cover/node/branch.rb +2 -1
  52. data/lib/deep_cover/node/case.rb +15 -13
  53. data/lib/deep_cover/node/collections.rb +2 -0
  54. data/lib/deep_cover/node/const.rb +2 -0
  55. data/lib/deep_cover/node/def.rb +10 -8
  56. data/lib/deep_cover/node/empty_body.rb +2 -0
  57. data/lib/deep_cover/node/exceptions.rb +3 -1
  58. data/lib/deep_cover/node/if.rb +3 -1
  59. data/lib/deep_cover/node/keywords.rb +4 -2
  60. data/lib/deep_cover/node/literals.rb +2 -0
  61. data/lib/deep_cover/node/loops.rb +5 -3
  62. data/lib/deep_cover/node/mixin/can_augment_children.rb +8 -7
  63. data/lib/deep_cover/node/mixin/check_completion.rb +3 -1
  64. data/lib/deep_cover/node/mixin/child_can_be_empty.rb +4 -2
  65. data/lib/deep_cover/node/mixin/executed_after_children.rb +2 -0
  66. data/lib/deep_cover/node/mixin/execution_location.rb +4 -2
  67. data/lib/deep_cover/node/mixin/flow_accounting.rb +2 -0
  68. data/lib/deep_cover/node/mixin/has_child.rb +22 -18
  69. data/lib/deep_cover/node/mixin/has_child_handler.rb +10 -8
  70. data/lib/deep_cover/node/mixin/has_tracker.rb +4 -2
  71. data/lib/deep_cover/node/mixin/is_statement.rb +3 -1
  72. data/lib/deep_cover/node/mixin/rewriting.rb +5 -3
  73. data/lib/deep_cover/node/mixin/wrapper.rb +2 -0
  74. data/lib/deep_cover/node/module.rb +11 -9
  75. data/lib/deep_cover/node/root.rb +2 -0
  76. data/lib/deep_cover/node/send.rb +4 -2
  77. data/lib/deep_cover/node/short_circuit.rb +4 -2
  78. data/lib/deep_cover/node/splat.rb +2 -0
  79. data/lib/deep_cover/node/variables.rb +2 -0
  80. data/lib/deep_cover/parser_ext/range.rb +3 -1
  81. data/lib/deep_cover/problem_with_diagnostic.rb +11 -9
  82. data/lib/deep_cover/reporter.rb +2 -0
  83. data/lib/deep_cover/reporter/istanbul.rb +28 -24
  84. data/lib/deep_cover/tools.rb +2 -0
  85. data/lib/deep_cover/tools/builtin_coverage.rb +6 -4
  86. data/lib/deep_cover/tools/camelize.rb +3 -1
  87. data/lib/deep_cover/tools/dasherize.rb +3 -1
  88. data/lib/deep_cover/tools/dump_covered_code.rb +7 -6
  89. data/lib/deep_cover/tools/execute_sample.rb +13 -13
  90. data/lib/deep_cover/tools/format.rb +3 -1
  91. data/lib/deep_cover/tools/format_char_cover.rb +4 -2
  92. data/lib/deep_cover/tools/format_generated_code.rb +3 -1
  93. data/lib/deep_cover/tools/number_lines.rb +2 -0
  94. data/lib/deep_cover/tools/our_coverage.rb +5 -3
  95. data/lib/deep_cover/tools/profiling.rb +66 -0
  96. data/lib/deep_cover/tools/require_relative_dir.rb +3 -1
  97. data/lib/deep_cover/tools/silence_warnings.rb +4 -1
  98. data/lib/deep_cover/tools/slice.rb +3 -1
  99. data/lib/deep_cover/tools/truncate_backtrace.rb +2 -0
  100. data/lib/deep_cover/version.rb +3 -1
  101. 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]*)[_?!]?/){ $1.capitalize }
7
+ string.to_s.gsub(/([a-z\d]*)[_?!]?/) { Regexp.last_match(1).capitalize }
6
8
  end
7
9
  end
8
10
  end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DeepCover
2
4
  module Tools::Dasherize
3
5
  # Poor man's dasherize. 'an_example' => 'an-example'
4
6
  def dasherize(string)
5
- string.to_s.gsub('_', '-')
7
+ string.to_s.tr('_', '-')
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
- "#{skipped.size} files could not be instrumented because of syntax errors:",
33
- *skipped.first(3),
34
- ('...' if skipped.size > 3),
35
- ].compact.join("\n")
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
- begin
7
- Tools.silence_warnings do
8
- if to_execute.is_a?(CoveredCode)
9
- to_execute.execute_code
10
- else
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,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DeepCover
2
4
  module Tools::NumberLines
3
5
  def number_lines(lines, lineno: 1, bad_linenos: [])
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DeepCover
2
- module Tools::OutCoverage
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, $VERBOSE = $VERBOSE, flag
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(Hash.new) { |k, h| h[k] = hash[k] if hash.has_key?(k) }
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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DeepCover
2
4
  module Tools::TruncateBacktrace
3
5
  def truncate_backtrace(backtrace, extra_context: 10)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DeepCover
2
- VERSION = "0.1.14"
4
+ VERSION = '0.1.15'
3
5
  end
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.14
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-07 00:00:00.000000000 Z
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: term-ansicolor
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: highline
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: with_progress
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: slop
99
+ name: with_progress
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - "~>"
102
+ - - ">="
103
103
  - !ruby/object:Gem::Version
104
- version: '4.0'
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: '4.0'
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: rake
155
+ name: psych
142
156
  requirement: !ruby/object:Gem::Requirement
143
157
  requirements:
144
- - - "~>"
158
+ - - ">="
145
159
  - !ruby/object:Gem::Version
146
- version: '10.0'
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: '10.0'
167
+ version: '2.0'
154
168
  - !ruby/object:Gem::Dependency
155
- name: rspec
169
+ name: rake
156
170
  requirement: !ruby/object:Gem::Requirement
157
171
  requirements:
158
172
  - - "~>"
159
173
  - !ruby/object:Gem::Version
160
- version: '3.0'
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: '3.0'
181
+ version: '10.0'
168
182
  - !ruby/object:Gem::Dependency
169
- name: activesupport
183
+ name: rspec
170
184
  requirement: !ruby/object:Gem::Requirement
171
185
  requirements:
172
186
  - - "~>"
173
187
  - !ruby/object:Gem::Version
174
- version: '4.0'
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: '4.0'
195
+ version: '3.0'
182
196
  - !ruby/object:Gem::Dependency
183
- name: psych
197
+ name: rubocop
184
198
  requirement: !ruby/object:Gem::Requirement
185
199
  requirements:
186
200
  - - ">="
187
201
  - !ruby/object:Gem::Version
188
- version: '2.0'
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: '2.0'
196
- description: Write a longer description or delete this line.
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: Write a short summary, because Rubygems requires one.
350
+ summary: In depth coverage of your Ruby code.
334
351
  test_files: []