deep-cover 0.6.2 → 0.6.3.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (139) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.rspec +2 -1
  4. data/.rspec_all +2 -1
  5. data/.rubocop.yml +8 -9
  6. data/Gemfile +2 -0
  7. data/Rakefile +32 -6
  8. data/bin/cov +3 -3
  9. data/deep_cover.gemspec +3 -16
  10. data/exe/deep-cover +5 -0
  11. data/lib/deep_cover/cli/debugger.rb +1 -1
  12. data/lib/deep_cover/cli/exec.rb +1 -1
  13. data/lib/deep_cover/cli/instrumented_clone_reporter.rb +5 -3
  14. data/lib/deep_cover/cli/runner.rb +2 -2
  15. data/lib/deep_cover/{tools/dump_covered_code.rb → dump_covered_code.rb} +2 -0
  16. metadata +10 -203
  17. data/lib/deep-cover.rb +0 -3
  18. data/lib/deep_cover.rb +0 -22
  19. data/lib/deep_cover/analyser.rb +0 -23
  20. data/lib/deep_cover/analyser/base.rb +0 -104
  21. data/lib/deep_cover/analyser/branch.rb +0 -41
  22. data/lib/deep_cover/analyser/covered_code_source.rb +0 -21
  23. data/lib/deep_cover/analyser/function.rb +0 -14
  24. data/lib/deep_cover/analyser/node.rb +0 -54
  25. data/lib/deep_cover/analyser/per_char.rb +0 -38
  26. data/lib/deep_cover/analyser/per_line.rb +0 -41
  27. data/lib/deep_cover/analyser/ruby25_like_branch.rb +0 -211
  28. data/lib/deep_cover/analyser/statement.rb +0 -33
  29. data/lib/deep_cover/analyser/stats.rb +0 -54
  30. data/lib/deep_cover/analyser/subset.rb +0 -27
  31. data/lib/deep_cover/auto_run.rb +0 -71
  32. data/lib/deep_cover/autoload_tracker.rb +0 -215
  33. data/lib/deep_cover/backports.rb +0 -22
  34. data/lib/deep_cover/base.rb +0 -117
  35. data/lib/deep_cover/basics.rb +0 -22
  36. data/lib/deep_cover/builtin_takeover.rb +0 -10
  37. data/lib/deep_cover/config.rb +0 -104
  38. data/lib/deep_cover/config_setter.rb +0 -33
  39. data/lib/deep_cover/core_ext/autoload_overrides.rb +0 -112
  40. data/lib/deep_cover/core_ext/coverage_replacement.rb +0 -61
  41. data/lib/deep_cover/core_ext/exec_callbacks.rb +0 -27
  42. data/lib/deep_cover/core_ext/instruction_sequence_load_iseq.rb +0 -32
  43. data/lib/deep_cover/core_ext/load_overrides.rb +0 -19
  44. data/lib/deep_cover/core_ext/require_overrides.rb +0 -28
  45. data/lib/deep_cover/coverage.rb +0 -125
  46. data/lib/deep_cover/coverage/analysis.rb +0 -42
  47. data/lib/deep_cover/coverage/persistence.rb +0 -84
  48. data/lib/deep_cover/covered_code.rb +0 -145
  49. data/lib/deep_cover/custom_requirer.rb +0 -187
  50. data/lib/deep_cover/flag_comment_associator.rb +0 -68
  51. data/lib/deep_cover/load.rb +0 -66
  52. data/lib/deep_cover/memoize.rb +0 -48
  53. data/lib/deep_cover/module_override.rb +0 -39
  54. data/lib/deep_cover/node.rb +0 -23
  55. data/lib/deep_cover/node/arguments.rb +0 -51
  56. data/lib/deep_cover/node/assignments.rb +0 -273
  57. data/lib/deep_cover/node/base.rb +0 -155
  58. data/lib/deep_cover/node/begin.rb +0 -27
  59. data/lib/deep_cover/node/block.rb +0 -61
  60. data/lib/deep_cover/node/branch.rb +0 -32
  61. data/lib/deep_cover/node/case.rb +0 -113
  62. data/lib/deep_cover/node/collections.rb +0 -31
  63. data/lib/deep_cover/node/const.rb +0 -12
  64. data/lib/deep_cover/node/def.rb +0 -40
  65. data/lib/deep_cover/node/empty_body.rb +0 -32
  66. data/lib/deep_cover/node/exceptions.rb +0 -79
  67. data/lib/deep_cover/node/if.rb +0 -73
  68. data/lib/deep_cover/node/keywords.rb +0 -86
  69. data/lib/deep_cover/node/literals.rb +0 -100
  70. data/lib/deep_cover/node/loops.rb +0 -74
  71. data/lib/deep_cover/node/mixin/can_augment_children.rb +0 -65
  72. data/lib/deep_cover/node/mixin/check_completion.rb +0 -18
  73. data/lib/deep_cover/node/mixin/child_can_be_empty.rb +0 -27
  74. data/lib/deep_cover/node/mixin/executed_after_children.rb +0 -15
  75. data/lib/deep_cover/node/mixin/execution_location.rb +0 -66
  76. data/lib/deep_cover/node/mixin/filters.rb +0 -47
  77. data/lib/deep_cover/node/mixin/flow_accounting.rb +0 -71
  78. data/lib/deep_cover/node/mixin/has_child.rb +0 -145
  79. data/lib/deep_cover/node/mixin/has_child_handler.rb +0 -75
  80. data/lib/deep_cover/node/mixin/has_tracker.rb +0 -46
  81. data/lib/deep_cover/node/mixin/is_statement.rb +0 -20
  82. data/lib/deep_cover/node/mixin/rewriting.rb +0 -35
  83. data/lib/deep_cover/node/mixin/wrapper.rb +0 -15
  84. data/lib/deep_cover/node/module.rb +0 -66
  85. data/lib/deep_cover/node/root.rb +0 -20
  86. data/lib/deep_cover/node/send.rb +0 -161
  87. data/lib/deep_cover/node/short_circuit.rb +0 -42
  88. data/lib/deep_cover/node/splat.rb +0 -15
  89. data/lib/deep_cover/node/variables.rb +0 -16
  90. data/lib/deep_cover/parser_ext/range.rb +0 -21
  91. data/lib/deep_cover/problem_with_diagnostic.rb +0 -63
  92. data/lib/deep_cover/reporter.rb +0 -10
  93. data/lib/deep_cover/reporter/base.rb +0 -68
  94. data/lib/deep_cover/reporter/html.rb +0 -15
  95. data/lib/deep_cover/reporter/html/base.rb +0 -14
  96. data/lib/deep_cover/reporter/html/index.rb +0 -59
  97. data/lib/deep_cover/reporter/html/site.rb +0 -70
  98. data/lib/deep_cover/reporter/html/source.rb +0 -136
  99. data/lib/deep_cover/reporter/html/template/assets/32px.png +0 -0
  100. data/lib/deep_cover/reporter/html/template/assets/40px.png +0 -0
  101. data/lib/deep_cover/reporter/html/template/assets/deep_cover.css.sass +0 -336
  102. data/lib/deep_cover/reporter/html/template/assets/jquery-3.2.1.min.js +0 -4
  103. data/lib/deep_cover/reporter/html/template/assets/jquery-3.2.1.min.map +0 -1
  104. data/lib/deep_cover/reporter/html/template/assets/jstree.css +0 -1108
  105. data/lib/deep_cover/reporter/html/template/assets/jstree.js +0 -8424
  106. data/lib/deep_cover/reporter/html/template/assets/jstreetable.js +0 -1069
  107. data/lib/deep_cover/reporter/html/template/assets/throbber.gif +0 -0
  108. data/lib/deep_cover/reporter/html/template/index.html.erb +0 -75
  109. data/lib/deep_cover/reporter/html/template/source.html.erb +0 -35
  110. data/lib/deep_cover/reporter/istanbul.rb +0 -184
  111. data/lib/deep_cover/reporter/text.rb +0 -58
  112. data/lib/deep_cover/reporter/tree/util.rb +0 -86
  113. data/lib/deep_cover/tools.rb +0 -22
  114. data/lib/deep_cover/tools/blank.rb +0 -25
  115. data/lib/deep_cover/tools/builtin_coverage.rb +0 -55
  116. data/lib/deep_cover/tools/camelize.rb +0 -13
  117. data/lib/deep_cover/tools/content_tag.rb +0 -11
  118. data/lib/deep_cover/tools/covered.rb +0 -9
  119. data/lib/deep_cover/tools/execute_sample.rb +0 -34
  120. data/lib/deep_cover/tools/format.rb +0 -18
  121. data/lib/deep_cover/tools/format_char_cover.rb +0 -19
  122. data/lib/deep_cover/tools/format_generated_code.rb +0 -27
  123. data/lib/deep_cover/tools/indent_string.rb +0 -26
  124. data/lib/deep_cover/tools/merge.rb +0 -16
  125. data/lib/deep_cover/tools/number_lines.rb +0 -22
  126. data/lib/deep_cover/tools/our_coverage.rb +0 -11
  127. data/lib/deep_cover/tools/profiling.rb +0 -68
  128. data/lib/deep_cover/tools/render_template.rb +0 -13
  129. data/lib/deep_cover/tools/require_relative_dir.rb +0 -12
  130. data/lib/deep_cover/tools/scan_match_datas.rb +0 -10
  131. data/lib/deep_cover/tools/silence_warnings.rb +0 -18
  132. data/lib/deep_cover/tools/slice.rb +0 -9
  133. data/lib/deep_cover/tools/strip_heredoc.rb +0 -18
  134. data/lib/deep_cover/tools/truncate_backtrace.rb +0 -32
  135. data/lib/deep_cover/tracker_bucket.rb +0 -50
  136. data/lib/deep_cover/tracker_hits_per_path.rb +0 -35
  137. data/lib/deep_cover/tracker_storage.rb +0 -76
  138. data/lib/deep_cover/tracker_storage_per_path.rb +0 -34
  139. data/lib/deep_cover/version.rb +0 -5
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module DeepCover
4
- module Tools::StripHeredoc
5
- # In-place implementation copied from active-support.
6
- IMPLEMENTATION = -> do
7
- gsub(/^#{scan(/^[ \t]*(?=\S)/).min}/, ''.freeze).tap do |stripped|
8
- stripped.freeze if frozen?
9
- end
10
- end
11
-
12
- # Same as #strip_heredoc from active-support
13
- # https://github.com/rails/rails/blob/16574409f813e2197f88e4a06b527618d64d9ff0/activesupport/lib/active_support/core_ext/string/strip.rb#L22
14
- def strip_heredoc(string)
15
- string.instance_exec(&IMPLEMENTATION)
16
- end
17
- end
18
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module DeepCover
4
- module Tools::TruncateBacktrace
5
- def truncate_backtrace(backtrace, extra_context: 10)
6
- backtrace = backtrace.backtrace if backtrace.is_a?(Exception)
7
- trace_lines = backtrace.uniq
8
-
9
- keep_from_begin = 0
10
- keep_from_end = backtrace.size - 1
11
-
12
- trace_lines.each do |line|
13
- from_begin = backtrace.index(line)
14
- from_end = backtrace.rindex(line)
15
- if from_begin <= backtrace.size - 1 - from_end
16
- keep_from_begin = [keep_from_begin, from_begin].max
17
- else
18
- keep_from_end = [keep_from_end, from_end].min
19
- end
20
- end
21
-
22
- keep_from_begin += extra_context
23
- keep_from_end -= extra_context
24
-
25
- return backtrace if keep_from_begin + 5 >= keep_from_end
26
-
27
- result = backtrace[0..keep_from_begin]
28
- result << "... #{keep_from_end - keep_from_begin - 1} levels..."
29
- result.concat backtrace[keep_from_end..-1]
30
- end
31
- end
32
- end
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module DeepCover
4
- bootstrap
5
-
6
- require_relative 'tracker_storage'
7
-
8
- # A holder for TrackerStorages, using some `global_name`.
9
- class TrackerBucket
10
- @@index = {}
11
-
12
- def self.[](global_name)
13
- raise ArgumentError, "'#{global_name}' is not a valid global name" unless global_name.start_with? '$'
14
- @@index[global_name] ||= new(global_name)
15
- end
16
-
17
- def setup_source
18
- "#{source} ||= {}"
19
- end
20
-
21
- def source
22
- @global_name
23
- end
24
-
25
- class << self
26
- alias_method :_load, :[]
27
- private :_load, :new
28
- end
29
-
30
- def inspect
31
- %{#<DeepCover::TrackerBucket "#{@global_name}">}
32
- end
33
-
34
- def create_storage(index = nil)
35
- index ||= @global.size
36
- TrackerStorage.new(bucket: self, array: @global[index] ||= [], index: index)
37
- end
38
-
39
- private
40
-
41
- def initialize(global_name)
42
- @global_name = global_name
43
- @global = eval(setup_source) # rubocop:disable Security/Eval
44
- end
45
-
46
- def _dump(_level)
47
- @global_name
48
- end
49
- end
50
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module DeepCover
4
- bootstrap
5
-
6
- # Should be seen as a hash like {path => tracker_hits, ...},
7
- # where tracker_hits is simply an array of integers returned from
8
- # TrackerStorage#tracker_hits.
9
- # Make it easier to separate some concerns, as well as marshalling.
10
- #
11
- class TrackerHitsPerPath
12
- extend Forwardable
13
- def_delegators :@index, :each, :each_key, :map, :transform_values, :to_h, :to_hash
14
-
15
- def initialize(index = {})
16
- @index = index
17
- end
18
-
19
- def [](val)
20
- @index[val] ||= []
21
- end
22
-
23
- def merge!(tracker_hits_per_path)
24
- @index.merge!(tracker_hits_per_path) { |_h, actual, to_merge| merge_tracker_hits(actual, to_merge) }
25
- self
26
- end
27
-
28
- private def merge_tracker_hits(hits, to_merge)
29
- unless hits.size == to_merge.size
30
- raise "Attempting to merge trackers of different sizes: #{hits.size} vs #{to_merge.size}"
31
- end
32
- hits.map!.with_index { |val, i| val + to_merge[i] }
33
- end
34
- end
35
- end
@@ -1,76 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module DeepCover
4
- bootstrap
5
-
6
- # List of allocated trackers from a bucket.
7
- # Should be thought of as a simple array of integers with
8
- # a limited interface.
9
- class TrackerBucket
10
- class TrackerStorage
11
- extend Forwardable
12
- def_delegators :@array, :[], :size, :each, :map, :fetch
13
-
14
- attr_reader :bucket
15
-
16
- def initialize(bucket:, array:, index:)
17
- @bucket = bucket
18
- @array = array
19
- @index = index
20
- @allocated = 0
21
- end
22
-
23
- # Returns a range of tracker ids
24
- def allocate_trackers(nb_needed)
25
- prev = @allocated
26
- @allocated += nb_needed
27
- missing = @allocated - @array.size
28
- @array.concat(Array.new(missing, 0)) if missing > 0
29
- prev...@allocated
30
- end
31
-
32
- def setup_source
33
- "(#{bucket.setup_source})[#{@index}]||=Array.new(#{size},0)"
34
- end
35
-
36
- def tracker_source(tracker_id)
37
- "#{bucket.source}[#{@index}][#{tracker_id}]+=1"
38
- end
39
-
40
- def tracker_hits
41
- @array.dup.freeze
42
- end
43
-
44
- def tracker_hits=(new_hits)
45
- if new_hits.size != @array.size
46
- warn 'Replacing tracker hits with array of different size'
47
- end
48
- @array.replace(new_hits)
49
- end
50
-
51
- private
52
-
53
- def dump
54
- {bucket: @bucket, index: @index, size: @array.size}
55
- end
56
-
57
- def _dump(_level)
58
- Marshal.dump(dump)
59
- end
60
-
61
- class << self
62
- private def load(bucket:, index:, size:)
63
- storage = bucket.create_storage(index)
64
- storage.allocate_trackers(size - storage.size)
65
- storage
66
- end
67
-
68
- private def _load(data)
69
- load(Marshal.load(data)) # rubocop:disable Security/MarshalLoad
70
- end
71
- end
72
- end
73
-
74
- private_constant :TrackerStorage
75
- end
76
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module DeepCover
4
- bootstrap
5
-
6
- # Should be seen as a hash like {path => tracker_storage, ...}
7
- # Make it easier to separate some concerns, as well as marshalling
8
- #
9
- class TrackerStoragePerPath
10
- extend Forwardable
11
- def_delegators :@index, :each, :each_key, :map, :transform_values
12
-
13
- attr_reader :bucket
14
-
15
- def initialize(bucket)
16
- @bucket = bucket
17
- @index = {}
18
- end
19
-
20
- def [](path)
21
- @index[path] ||= @bucket.create_storage
22
- end
23
-
24
- def tracker_hits_per_path
25
- TrackerHitsPerPath.new(@index.transform_values(&:tracker_hits))
26
- end
27
-
28
- def tracker_hits_per_path=(tracker_hits_per_path)
29
- tracker_hits_per_path.each do |path, tracker_hits|
30
- self[path].tracker_hits = tracker_hits
31
- end
32
- end
33
- end
34
- end
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module DeepCover
4
- VERSION = '0.6.2'
5
- end