covered 0.17.1 → 0.18.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3b906f699dc0a8c5ab648200ae5330cf12a0da31e5c6966bb105d1df387c7179
4
- data.tar.gz: 6692c75aa8764654a5a278e248bf4b9f224a10e84363a7cbf0dfc68ba5d84be6
3
+ metadata.gz: 016df0cc962d1ae6f41781f31c6e96066b68e7f0b2b6a3740f2e0c4f23e4ea93
4
+ data.tar.gz: d26da5abf8676d28fe87d8560b6a02f9e114639fecdb8a27bb4a69b62d645440
5
5
  SHA512:
6
- metadata.gz: 6656a91ce7b29c67c66dd9e1d63f9c38231b1bfbdedae4ce29b638468d55d0476d308522ecf24d07fee905081653d192cd90d73cf1772b59fd7534f87bfd2cbb
7
- data.tar.gz: 21f2d81e59417f81bcf63c7c95e0a6023c67bd68985811f3e2184c1fdbd447be5dd4e74b373546ea5eb307365799b5bf9ea24d2243301cbd9c2abe5112f8382f
6
+ metadata.gz: 39d4eeb947f26d7d1c48872a8e6706b123c721a80534eb7c5c4447cbe54b7d96605a20832c2c6d8a7611d429a18d5cbf3572973580b757f58d2b3205f5cb569f
7
+ data.tar.gz: c35ca843c00c9545f8771b9c58622e8076f9af25a188c3c01c3339581e9f87af2f77b0f22ae69301cf2f4f8118269aaf634cbc24d19a4c80329603c9c0a54879
checksums.yaml.gz.sig CHANGED
Binary file
@@ -8,69 +8,85 @@ require_relative 'wrapper'
8
8
  require 'coverage'
9
9
 
10
10
  module Covered
11
- class Capture < Wrapper
12
- def initialize(output)
13
- super(output)
14
-
15
- begin
16
- @trace = TracePoint.new(:line, :call, :c_call) do |trace|
17
- if trace.event == :call
18
- # Ruby doesn't always mark call-sites in sub-expressions, so we use this approach to compute a call site and mark it:
19
- if location = caller_locations(2, 1).first and path = location.path
20
- @output.mark(path, location.lineno, 1)
11
+ def self.coverage_with_eval?
12
+ if ::Coverage.respond_to?(:supported?)
13
+ ::Coverage.supported?(:eval)
14
+ end
15
+ end
16
+
17
+ unless self.coverage_with_eval?
18
+ class Capture < Wrapper
19
+ def initialize(output)
20
+ super(output)
21
+
22
+ begin
23
+ @trace = TracePoint.new(:line, :call, :c_call) do |trace|
24
+ if trace.event == :call
25
+ # Ruby doesn't always mark call-sites in sub-expressions, so we use this approach to compute a call site and mark it:
26
+ if location = caller_locations(2, 1).first and path = location.path
27
+ @output.mark(path, location.lineno, 1)
28
+ end
29
+ end
30
+
31
+ if path = trace.path
32
+ @output.mark(path, trace.lineno, 1)
21
33
  end
22
34
  end
23
-
24
- if path = trace.path
25
- @output.mark(path, trace.lineno, 1)
26
- end
35
+ rescue
36
+ warn "Line coverage disabled: #{$!}"
37
+ @trace = nil
27
38
  end
28
- rescue
29
- warn "Line coverage disabled: #{$!}"
30
- @trace = nil
31
39
  end
32
- end
33
-
34
- def enable
35
- super
36
40
 
37
- @trace&.enable
38
- end
39
-
40
- def disable
41
- @trace&.disable
41
+ def enable
42
+ super
43
+
44
+ @trace&.enable
45
+ end
46
+
47
+ def disable
48
+ @trace&.disable
49
+
50
+ super
51
+ end
42
52
 
43
- super
53
+ def execute(source, binding: TOPLEVEL_BINDING)
54
+ enable
55
+
56
+ eval(source.code!, binding, source.path)
57
+ ensure
58
+ disable
59
+ end
44
60
  end
45
-
46
- def execute(source, binding: TOPLEVEL_BINDING)
47
- enable
61
+ else
62
+ class Capture < Wrapper
63
+ def enable
64
+ super
65
+
66
+ ::Coverage.start(lines: true, eval: true)
67
+ end
48
68
 
49
- eval(source.code!, binding, source.path)
50
- ensure
51
- disable
69
+ def disable
70
+ results = ::Coverage.result
71
+
72
+ results.each do |path, result|
73
+ lines = result[:lines]
74
+
75
+ lines.each_with_index do |count, lineno|
76
+ @output.mark(path, lineno+1, count) if count
77
+ end
78
+ end
79
+
80
+ super
81
+ end
82
+
83
+ def execute(source, binding: TOPLEVEL_BINDING)
84
+ enable
85
+
86
+ eval(source.code!, binding, source.path)
87
+ ensure
88
+ disable
89
+ end
52
90
  end
53
91
  end
54
-
55
- # class Capture < Wrapper
56
- # def enable
57
- # super
58
- #
59
- # ::Coverage.start
60
- # end
61
- #
62
- # def disable
63
- # result = ::Coverage.result
64
- #
65
- # puts result.inspect
66
- #
67
- # result.each do |path, lines|
68
- # lines.each_with_index do |lineno, count|
69
- # @output.mark(path, lineno, count)
70
- # end
71
- # end
72
- #
73
- # super
74
- # end
75
- # end
76
92
  end
@@ -8,7 +8,6 @@ require_relative 'wrapper'
8
8
  require 'msgpack'
9
9
  require 'time'
10
10
  require 'set'
11
- require 'console'
12
11
 
13
12
  module Covered
14
13
  class Persist < Wrapper
@@ -26,7 +25,7 @@ module Covered
26
25
  return unless path = expand_path(record[:path])
27
26
 
28
27
  unless File.exist?(path)
29
- Console.logger.debug(self) {"Ignoring coverage, path #{path} does not exist!"}
28
+ # Ignore this coverage, the file no longer exists.
30
29
  return
31
30
  end
32
31
 
@@ -35,7 +34,7 @@ module Covered
35
34
 
36
35
  unless ignore_mtime
37
36
  if File.mtime(path).to_f > record[:mtime]
38
- Console.logger.debug(self) {"Ignoring coverage, path #{path} has been updated: #{File.mtime(path).to_f} > #{record[:mtime]}!"}
37
+ # Ignore this coverage, the file has been modified since it was recorded.
39
38
  return
40
39
  end
41
40
  end
@@ -66,8 +65,6 @@ module Covered
66
65
  File.open(@path, "rb") do |file|
67
66
  file.flock(File::LOCK_SH)
68
67
 
69
- Console.logger.debug(self) {"Loading from #{@path} with #{options}..."}
70
-
71
68
  make_unpacker(file).each do |record|
72
69
  self.apply(record, **options)
73
70
  end
@@ -79,8 +76,6 @@ module Covered
79
76
  File.open(@path, "wb") do |file|
80
77
  file.flock(File::LOCK_EX)
81
78
 
82
- Console.logger.debug(self) {"Saving to #{@path}..."}
83
-
84
79
  packer = make_packer(file)
85
80
 
86
81
  self.each do |coverage|
data/lib/covered/rspec.rb CHANGED
@@ -4,7 +4,6 @@
4
4
  # Copyright, 2018-2022, by Samuel Williams.
5
5
 
6
6
  require_relative 'config'
7
-
8
7
  require 'rspec/core/formatters'
9
8
 
10
9
  $covered = Covered::Config.load
@@ -13,6 +12,7 @@ module Covered
13
12
  module RSpec
14
13
  module Policy
15
14
  def load_spec_files
15
+ $stderr.puts "load_spec_files"
16
16
  $covered.enable
17
17
 
18
18
  super
@@ -6,8 +6,6 @@
6
6
  require_relative 'statistics'
7
7
  require_relative 'wrapper'
8
8
 
9
- require 'console/terminal'
10
-
11
9
  module Covered
12
10
  class Summary
13
11
  def initialize(threshold: 1.0)
@@ -15,6 +13,8 @@ module Covered
15
13
  end
16
14
 
17
15
  def terminal(output)
16
+ require 'console/terminal'
17
+
18
18
  Console::Terminal.for(output).tap do |terminal|
19
19
  terminal[:path] ||= terminal.style(nil, nil, :bold, :underline)
20
20
  terminal[:brief_path] ||= terminal.style(:yellow)
@@ -4,5 +4,5 @@
4
4
  # Copyright, 2018-2022, by Samuel Williams.
5
5
 
6
6
  module Covered
7
- VERSION = "0.17.1"
7
+ VERSION = "0.18.1"
8
8
  end
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.17.1
4
+ version: 0.18.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -41,7 +41,7 @@ cert_chain:
41
41
  Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
42
42
  voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
43
43
  -----END CERTIFICATE-----
44
- date: 2022-09-20 00:00:00.000000000 Z
44
+ date: 2022-10-03 00:00:00.000000000 Z
45
45
  dependencies:
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: async-rest
metadata.gz.sig CHANGED
Binary file