cover_rage 1.3.0 → 1.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 00ad4585a873585456f2c9948a88bcab8d54438b5c952a7fdb03a0e411763e3e
4
- data.tar.gz: 231662f71294e8e983e7632c8ad530b3c18752f2e6d4d0a5d2ea3ea2de0edc90
3
+ metadata.gz: 2a74ea3de571687288c9efaad0bf9005ffe9eb69ccc3f23e4826aa9edf54ee60
4
+ data.tar.gz: b3c50a447fd07a467635dddfa5c849c40043eba0b20543bd00f02d6bbfeb0871
5
5
  SHA512:
6
- metadata.gz: '048eb40f6ed0df7c75e4f353ce17fa516345a2832d6b25497453d4bb94aa302197e8e57c5fdbe50444d3a35da91bf641d1a0bbbd2b8d911cf457988016588932'
7
- data.tar.gz: 587134f993d40afb1c4b9242e030aac02ea886436a1e3912413630f1e7f4e97a403b1b2693a4af8907df23e9a4a8f91e7fa2f782089fa7609fe997ed6e45fa88
6
+ metadata.gz: ab94c0ab0dff6a0e47106a123a436999e311e62f4822b63feee8f40bfcc855854121bf8a1a279d633fe161f8aae07bab547dfc1582b5cce3a988583b7d19f158
7
+ data.tar.gz: 75e16d91fae6150723cc17034e574b7512996e4c4a2fb4b1ae42700b6267a473ffc6feb8e172760fd6f2b9d9bf2acfdea73f49c4633351a8056b8249edcb745f
@@ -9,13 +9,10 @@ module CoverRage
9
9
  module Stores
10
10
  class Redis
11
11
  KEY = 'cover_rage_records'
12
+ IS_REDIS_BELOW_V5 = Gem::Version.new(::Redis::VERSION) < Gem::Version.new('5')
12
13
  def initialize(url)
13
- @redis =
14
- if url.start_with?('rediss')
15
- ::Redis.new(url:, ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE })
16
- else
17
- ::Redis.new(url:)
18
- end
14
+ @redis = new_redis(url)
15
+ @redis_for_below_v5 = new_redis(url) if IS_REDIS_BELOW_V5
19
16
  end
20
17
 
21
18
  def transaction(&)
@@ -42,7 +39,14 @@ module CoverRage
42
39
  end
43
40
 
44
41
  def list
45
- result = @redis.hgetall(KEY)
42
+ # For Redis versions below 5, we need to use the separate client to read
43
+ # the data while the transaction is in progress.
44
+ client = if Thread.current[:redis_multi] && IS_REDIS_BELOW_V5
45
+ @redis_for_below_v5
46
+ else
47
+ @redis
48
+ end
49
+ result = client.hgetall(KEY)
46
50
  return [] if result.empty?
47
51
 
48
52
  result.map { |_, value| Record.new(**JSON.parse(value)) }
@@ -51,6 +55,16 @@ module CoverRage
51
55
  def clear
52
56
  @redis.del(KEY)
53
57
  end
58
+
59
+ private
60
+
61
+ def new_redis(url)
62
+ if url.start_with?('rediss')
63
+ ::Redis.new(url:, ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE })
64
+ else
65
+ ::Redis.new(url:)
66
+ end
67
+ end
54
68
  end
55
69
  end
56
70
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cover_rage
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Weihang Jian
@@ -69,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
69
  - !ruby/object:Gem::Version
70
70
  version: '0'
71
71
  requirements: []
72
- rubygems_version: 4.0.4
72
+ rubygems_version: 4.0.9
73
73
  specification_version: 4
74
74
  summary: cover_rage is a Ruby code coverage tool designed to be simple and easy to
75
75
  use. It can be used not only for test coverage but also in production services to