mock_redis 0.36.0 → 0.37.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 +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +1 -1
- data/lib/mock_redis/database.rb +1 -1
- data/lib/mock_redis/hash_methods.rb +1 -1
- data/lib/mock_redis/list_methods.rb +7 -2
- data/lib/mock_redis/multi_db_wrapper.rb +1 -1
- data/lib/mock_redis/pipelined_wrapper.rb +12 -14
- data/lib/mock_redis/set_methods.rb +6 -1
- data/lib/mock_redis/stream.rb +3 -3
- data/lib/mock_redis/string_methods.rb +3 -3
- data/lib/mock_redis/transaction_wrapper.rb +5 -7
- data/lib/mock_redis/utility_methods.rb +4 -2
- data/lib/mock_redis/version.rb +1 -1
- data/lib/mock_redis/zset.rb +4 -2
- data/lib/mock_redis/zset_methods.rb +3 -3
- data/lib/mock_redis.rb +1 -2
- metadata +19 -360
- data/.github/workflows/lint.yml +0 -31
- data/.github/workflows/tests.yml +0 -63
- data/.gitignore +0 -5
- data/.mailmap +0 -2
- data/.overcommit.yml +0 -21
- data/.rspec +0 -1
- data/.rubocop.yml +0 -148
- data/.rubocop_todo.yml +0 -35
- data/.simplecov +0 -4
- data/Gemfile +0 -13
- data/Rakefile +0 -2
- data/mock_redis.gemspec +0 -32
- data/spec/client_spec.rb +0 -36
- data/spec/cloning_spec.rb +0 -95
- data/spec/commands/append_spec.rb +0 -24
- data/spec/commands/auth_spec.rb +0 -7
- data/spec/commands/bgrewriteaof_spec.rb +0 -7
- data/spec/commands/bgsave_spec.rb +0 -7
- data/spec/commands/bitcount_spec.rb +0 -25
- data/spec/commands/bitfield_spec.rb +0 -169
- data/spec/commands/blmove_spec.rb +0 -52
- data/spec/commands/blpop_spec.rb +0 -53
- data/spec/commands/brpop_spec.rb +0 -59
- data/spec/commands/brpoplpush_spec.rb +0 -52
- data/spec/commands/connected_spec.rb +0 -7
- data/spec/commands/connection_spec.rb +0 -15
- data/spec/commands/dbsize_spec.rb +0 -18
- data/spec/commands/decr_spec.rb +0 -34
- data/spec/commands/decrby_spec.rb +0 -34
- data/spec/commands/del_spec.rb +0 -52
- data/spec/commands/disconnect_spec.rb +0 -7
- data/spec/commands/dump_spec.rb +0 -19
- data/spec/commands/echo_spec.rb +0 -11
- data/spec/commands/eval_spec.rb +0 -7
- data/spec/commands/evalsha_spec.rb +0 -10
- data/spec/commands/exists_spec.rb +0 -43
- data/spec/commands/expire_spec.rb +0 -111
- data/spec/commands/expireat_spec.rb +0 -47
- data/spec/commands/flushall_spec.rb +0 -38
- data/spec/commands/flushdb_spec.rb +0 -38
- data/spec/commands/future_spec.rb +0 -30
- data/spec/commands/geoadd_spec.rb +0 -58
- data/spec/commands/geodist_spec.rb +0 -118
- data/spec/commands/geohash_spec.rb +0 -52
- data/spec/commands/geopos_spec.rb +0 -55
- data/spec/commands/get_spec.rb +0 -31
- data/spec/commands/getbit_spec.rb +0 -34
- data/spec/commands/getdel.rb +0 -24
- data/spec/commands/getrange_spec.rb +0 -22
- data/spec/commands/getset_spec.rb +0 -23
- data/spec/commands/hdel_spec.rb +0 -77
- data/spec/commands/hexists_spec.rb +0 -27
- data/spec/commands/hget_spec.rb +0 -28
- data/spec/commands/hgetall_spec.rb +0 -32
- data/spec/commands/hincrby_spec.rb +0 -58
- data/spec/commands/hincrbyfloat_spec.rb +0 -58
- data/spec/commands/hkeys_spec.rb +0 -19
- data/spec/commands/hlen_spec.rb +0 -19
- data/spec/commands/hmget_spec.rb +0 -46
- data/spec/commands/hmset_spec.rb +0 -69
- data/spec/commands/hscan_each_spec.rb +0 -48
- data/spec/commands/hscan_spec.rb +0 -27
- data/spec/commands/hset_spec.rb +0 -42
- data/spec/commands/hsetnx_spec.rb +0 -44
- data/spec/commands/hvals_spec.rb +0 -19
- data/spec/commands/incr_spec.rb +0 -34
- data/spec/commands/incrby_spec.rb +0 -44
- data/spec/commands/incrbyfloat_spec.rb +0 -44
- data/spec/commands/info_spec.rb +0 -62
- data/spec/commands/keys_spec.rb +0 -139
- data/spec/commands/lastsave_spec.rb +0 -8
- data/spec/commands/lindex_spec.rb +0 -49
- data/spec/commands/linsert_spec.rb +0 -68
- data/spec/commands/llen_spec.rb +0 -16
- data/spec/commands/lmove_spec.rb +0 -72
- data/spec/commands/lpop_spec.rb +0 -35
- data/spec/commands/lpush_spec.rb +0 -43
- data/spec/commands/lpushx_spec.rb +0 -46
- data/spec/commands/lrange_spec.rb +0 -51
- data/spec/commands/lrem_spec.rb +0 -80
- data/spec/commands/lset_spec.rb +0 -43
- data/spec/commands/ltrim_spec.rb +0 -45
- data/spec/commands/mapped_hmget_spec.rb +0 -29
- data/spec/commands/mapped_hmset_spec.rb +0 -47
- data/spec/commands/mapped_mget_spec.rb +0 -22
- data/spec/commands/mapped_mset_spec.rb +0 -19
- data/spec/commands/mapped_msetnx_spec.rb +0 -26
- data/spec/commands/mget_spec.rb +0 -65
- data/spec/commands/move_spec.rb +0 -147
- data/spec/commands/mset_spec.rb +0 -43
- data/spec/commands/msetnx_spec.rb +0 -40
- data/spec/commands/persist_spec.rb +0 -48
- data/spec/commands/pexpire_spec.rb +0 -86
- data/spec/commands/pexpireat_spec.rb +0 -48
- data/spec/commands/ping_spec.rb +0 -11
- data/spec/commands/pipelined_spec.rb +0 -114
- data/spec/commands/psetex_spec.rb +0 -44
- data/spec/commands/pttl_spec.rb +0 -41
- data/spec/commands/quit_spec.rb +0 -7
- data/spec/commands/randomkey_spec.rb +0 -20
- data/spec/commands/rename_spec.rb +0 -42
- data/spec/commands/renamenx_spec.rb +0 -41
- data/spec/commands/restore_spec.rb +0 -47
- data/spec/commands/rpop_spec.rb +0 -35
- data/spec/commands/rpoplpush_spec.rb +0 -50
- data/spec/commands/rpush_spec.rb +0 -43
- data/spec/commands/rpushx_spec.rb +0 -46
- data/spec/commands/sadd_spec.rb +0 -45
- data/spec/commands/save_spec.rb +0 -7
- data/spec/commands/scan_each_spec.rb +0 -39
- data/spec/commands/scan_spec.rb +0 -64
- data/spec/commands/scard_spec.rb +0 -18
- data/spec/commands/script_spec.rb +0 -9
- data/spec/commands/sdiff_spec.rb +0 -47
- data/spec/commands/sdiffstore_spec.rb +0 -58
- data/spec/commands/select_spec.rb +0 -61
- data/spec/commands/set_spec.rb +0 -134
- data/spec/commands/setbit_spec.rb +0 -55
- data/spec/commands/setex_spec.rb +0 -38
- data/spec/commands/setnx_spec.rb +0 -25
- data/spec/commands/setrange_spec.rb +0 -30
- data/spec/commands/sinter_spec.rb +0 -39
- data/spec/commands/sinterstore_spec.rb +0 -53
- data/spec/commands/sismember_spec.rb +0 -29
- data/spec/commands/smembers_spec.rb +0 -28
- data/spec/commands/smismember_spec.rb +0 -34
- data/spec/commands/smove_spec.rb +0 -41
- data/spec/commands/sort_list_spec.rb +0 -21
- data/spec/commands/sort_set_spec.rb +0 -21
- data/spec/commands/sort_zset_spec.rb +0 -21
- data/spec/commands/spop_spec.rb +0 -40
- data/spec/commands/srandmember_spec.rb +0 -49
- data/spec/commands/srem_spec.rb +0 -45
- data/spec/commands/sscan_each_spec.rb +0 -48
- data/spec/commands/sscan_spec.rb +0 -39
- data/spec/commands/strlen_spec.rb +0 -18
- data/spec/commands/sunion_spec.rb +0 -42
- data/spec/commands/sunionstore_spec.rb +0 -59
- data/spec/commands/ttl_spec.rb +0 -40
- data/spec/commands/type_spec.rb +0 -36
- data/spec/commands/unwatch_spec.rb +0 -7
- data/spec/commands/watch_spec.rb +0 -21
- data/spec/commands/xadd_spec.rb +0 -122
- data/spec/commands/xlen_spec.rb +0 -22
- data/spec/commands/xrange_spec.rb +0 -164
- data/spec/commands/xread_spec.rb +0 -66
- data/spec/commands/xrevrange_spec.rb +0 -130
- data/spec/commands/xtrim_spec.rb +0 -36
- data/spec/commands/zadd_spec.rb +0 -129
- data/spec/commands/zcard_spec.rb +0 -19
- data/spec/commands/zcount_spec.rb +0 -39
- data/spec/commands/zincrby_spec.rb +0 -31
- data/spec/commands/zinterstore_spec.rb +0 -130
- data/spec/commands/zpopmax_spec.rb +0 -60
- data/spec/commands/zpopmin_spec.rb +0 -60
- data/spec/commands/zrange_spec.rb +0 -80
- data/spec/commands/zrangebyscore_spec.rb +0 -83
- data/spec/commands/zrank_spec.rb +0 -29
- data/spec/commands/zrem_spec.rb +0 -50
- data/spec/commands/zremrangebyrank_spec.rb +0 -27
- data/spec/commands/zremrangebyscore_spec.rb +0 -35
- data/spec/commands/zrevrange_spec.rb +0 -56
- data/spec/commands/zrevrangebyscore_spec.rb +0 -58
- data/spec/commands/zrevrank_spec.rb +0 -29
- data/spec/commands/zscan_each_spec.rb +0 -48
- data/spec/commands/zscan_spec.rb +0 -26
- data/spec/commands/zscore_spec.rb +0 -22
- data/spec/commands/zunionstore_spec.rb +0 -137
- data/spec/mock_redis_spec.rb +0 -93
- data/spec/spec_helper.rb +0 -74
- data/spec/support/redis_multiplexer.rb +0 -123
- data/spec/support/shared_examples/does_not_cleanup_empty_strings.rb +0 -14
- data/spec/support/shared_examples/only_operates_on_hashes.rb +0 -15
- data/spec/support/shared_examples/only_operates_on_lists.rb +0 -15
- data/spec/support/shared_examples/only_operates_on_sets.rb +0 -15
- data/spec/support/shared_examples/only_operates_on_strings.rb +0 -13
- data/spec/support/shared_examples/only_operates_on_zsets.rb +0 -59
- data/spec/support/shared_examples/sorts_enumerables.rb +0 -56
- data/spec/transactions_spec.rb +0 -163
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d7bda05082845039ee8e7aa688238c8006fb6754b5198e325e92723f4ec63bd
|
4
|
+
data.tar.gz: 430cd98257705509362934dc755f9e88820ebb1e7d39dee2a056ffd28c120d4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cff49225d6412aababaaad3cca42394764168862cc1c6d2b434fb83b5889582f0a74698b696e244036b695b318da0ea444cda16abe6e1ca73bfe9e2e3ab05ed9
|
7
|
+
data.tar.gz: 32cbd749e2180f56c1e779aedc726114c2aa242fe6d87e95a75f98d85b51814befea89c27f6cf6d7a1d306cb526236b9bf186b0aa1c541c4621969103c485691
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# MockRedis Changelog
|
2
2
|
|
3
|
+
### 0.37.0
|
4
|
+
|
5
|
+
* Require Ruby 2.7 or newer, since Ruby 2.6 and older are EOL
|
6
|
+
* Remove unnecessary files from gem contents
|
7
|
+
* Add support for popping multiple items with `lpop`
|
8
|
+
* Add support for `scan` with type option
|
9
|
+
* Add support for `sadd?`
|
10
|
+
* Add support for scanning on keys containing hash tags (`{...}`)
|
11
|
+
|
3
12
|
### 0.36.0
|
4
13
|
|
5
14
|
* Add support for `smismember`
|
data/README.md
CHANGED
data/lib/mock_redis/database.rb
CHANGED
@@ -108,8 +108,13 @@ class MockRedis
|
|
108
108
|
value
|
109
109
|
end
|
110
110
|
|
111
|
-
def lpop(key)
|
112
|
-
with_list_at(key, &:shift)
|
111
|
+
def lpop(key, count = nil)
|
112
|
+
return with_list_at(key, &:shift) if count.nil?
|
113
|
+
|
114
|
+
record_count = llen(key)
|
115
|
+
return nil if record_count.zero?
|
116
|
+
|
117
|
+
[record_count, count].min.times.map { with_list_at(key, &:shift) }
|
113
118
|
end
|
114
119
|
|
115
120
|
def lpush(key, values)
|
@@ -41,22 +41,20 @@ class MockRedis
|
|
41
41
|
end
|
42
42
|
|
43
43
|
responses = @pipelined_futures.flat_map do |future|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
future.store_result(result)
|
44
|
+
result = if future.block
|
45
|
+
send(*future.command, &future.block)
|
46
|
+
else
|
47
|
+
send(*future.command)
|
48
|
+
end
|
49
|
+
future.store_result(result)
|
51
50
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
end
|
57
|
-
rescue StandardError => e
|
58
|
-
e
|
51
|
+
if future.block
|
52
|
+
result
|
53
|
+
else
|
54
|
+
[result]
|
59
55
|
end
|
56
|
+
rescue StandardError => e
|
57
|
+
e
|
60
58
|
end
|
61
59
|
@pipelined_futures = []
|
62
60
|
responses
|
@@ -27,6 +27,11 @@ class MockRedis
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
+
def sadd?(key, members)
|
31
|
+
res = sadd(key, members)
|
32
|
+
res.is_a?(Numeric) ? res > 0 : res
|
33
|
+
end
|
34
|
+
|
30
35
|
def scard(key)
|
31
36
|
with_set_at(key, &:length)
|
32
37
|
end
|
@@ -171,7 +176,7 @@ class MockRedis
|
|
171
176
|
with_set_at(keys.first, &blk)
|
172
177
|
else
|
173
178
|
with_set_at(keys.first) do |set|
|
174
|
-
with_sets_at(*(keys[1
|
179
|
+
with_sets_at(*(keys[1..])) do |*sets|
|
175
180
|
yield(*([set] + sets))
|
176
181
|
end
|
177
182
|
end
|
data/lib/mock_redis/stream.rb
CHANGED
@@ -37,7 +37,7 @@ class MockRedis
|
|
37
37
|
@members = if count == 0
|
38
38
|
Set.new
|
39
39
|
else
|
40
|
-
@members.to_a[-count
|
40
|
+
@members.to_a[-count..].to_set
|
41
41
|
end
|
42
42
|
deleted
|
43
43
|
else
|
@@ -71,8 +71,8 @@ class MockRedis
|
|
71
71
|
items
|
72
72
|
end
|
73
73
|
|
74
|
-
def each
|
75
|
-
members.each
|
74
|
+
def each(&block)
|
75
|
+
members.each(&block)
|
76
76
|
end
|
77
77
|
|
78
78
|
private
|
@@ -38,7 +38,7 @@ class MockRedis
|
|
38
38
|
type, offset = args.shift(2)
|
39
39
|
|
40
40
|
is_signed = type.slice(0) == 'i'
|
41
|
-
type_size = type[1
|
41
|
+
type_size = type[1..].to_i
|
42
42
|
|
43
43
|
if (type_size > 64 && is_signed) || (type_size >= 64 && !is_signed)
|
44
44
|
raise Redis::CommandError,
|
@@ -47,7 +47,7 @@ class MockRedis
|
|
47
47
|
end
|
48
48
|
|
49
49
|
if offset.to_s[0] == '#'
|
50
|
-
offset = offset[1
|
50
|
+
offset = offset[1..].to_i * type_size
|
51
51
|
end
|
52
52
|
|
53
53
|
bits = []
|
@@ -365,7 +365,7 @@ class MockRedis
|
|
365
365
|
old_value = (data[key] || '')
|
366
366
|
|
367
367
|
prefix = zero_pad(old_value[0...offset], offset)
|
368
|
-
data[key] = prefix + value + (old_value[(offset + value.length)
|
368
|
+
data[key] = prefix + value + (old_value[(offset + value.length)..] || '')
|
369
369
|
data[key].length
|
370
370
|
end
|
371
371
|
|
@@ -57,13 +57,11 @@ class MockRedis
|
|
57
57
|
@multi_block_given = false
|
58
58
|
|
59
59
|
responses = @transaction_futures.map do |future|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
e
|
66
|
-
end
|
60
|
+
result = send(*future.command)
|
61
|
+
future.store_result(result)
|
62
|
+
future.value
|
63
|
+
rescue StandardError => e
|
64
|
+
e
|
67
65
|
end
|
68
66
|
|
69
67
|
@transaction_futures = []
|
@@ -28,6 +28,7 @@ class MockRedis
|
|
28
28
|
cursor = cursor.to_i
|
29
29
|
match = opts[:match] || '*'
|
30
30
|
key = opts[:key] || lambda { |x| x }
|
31
|
+
type_opt = opts[:type]
|
31
32
|
filtered_values = []
|
32
33
|
|
33
34
|
limit = cursor + count
|
@@ -35,7 +36,8 @@ class MockRedis
|
|
35
36
|
|
36
37
|
unless values[cursor...limit].nil?
|
37
38
|
filtered_values = values[cursor...limit].select do |val|
|
38
|
-
redis_pattern_to_ruby_regex(match).match(key.call(val))
|
39
|
+
redis_pattern_to_ruby_regex(match).match(key.call(val)) &&
|
40
|
+
(type_opt.nil? || type(val) == type_opt)
|
39
41
|
end
|
40
42
|
end
|
41
43
|
|
@@ -68,7 +70,7 @@ class MockRedis
|
|
68
70
|
end
|
69
71
|
|
70
72
|
def left_pad(str, size)
|
71
|
-
str =
|
73
|
+
str = "0#{str}" while str.length < size
|
72
74
|
|
73
75
|
str
|
74
76
|
end
|
data/lib/mock_redis/version.rb
CHANGED
data/lib/mock_redis/zset.rb
CHANGED
@@ -10,9 +10,11 @@ class MockRedis
|
|
10
10
|
|
11
11
|
def_delegators :members, :empty?, :include?, :size
|
12
12
|
|
13
|
-
def initialize
|
13
|
+
def initialize(enum = nil)
|
14
14
|
@members = Set.new
|
15
|
-
@
|
15
|
+
@members.merge(enum) if enum
|
16
|
+
|
17
|
+
@scores = {}
|
16
18
|
end
|
17
19
|
|
18
20
|
def initialize_copy(source)
|
@@ -26,7 +26,7 @@ class MockRedis
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def zadd_one_member(key, score, member, zadd_options = {})
|
29
|
-
assert_scorey(score) unless score.to_s =~ /(
|
29
|
+
assert_scorey(score) unless score.to_s =~ /(\+|-)inf/
|
30
30
|
|
31
31
|
with_zset_at(key) do |zset|
|
32
32
|
if zadd_options[:incr]
|
@@ -316,7 +316,7 @@ class MockRedis
|
|
316
316
|
with_zset_at(keys.first, coercible: coercible, &blk)
|
317
317
|
else
|
318
318
|
with_zset_at(keys.first, coercible: coercible) do |set|
|
319
|
-
with_zsets_at(*(keys[1
|
319
|
+
with_zsets_at(*(keys[1..]), coercible: coercible) do |*sets|
|
320
320
|
yield(*([set] + sets))
|
321
321
|
end
|
322
322
|
end
|
@@ -351,7 +351,7 @@ class MockRedis
|
|
351
351
|
end
|
352
352
|
|
353
353
|
def assert_scorey(value, message = 'ERR value is not a valid float')
|
354
|
-
return if value.to_s =~ /\(?(
|
354
|
+
return if value.to_s =~ /\(?(-|\+)inf/
|
355
355
|
|
356
356
|
value = $1 if value.to_s =~ /\((.*)/
|
357
357
|
unless looks_like_float?(value)
|
data/lib/mock_redis.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'set'
|
2
|
-
require 'ruby2_keywords'
|
3
2
|
|
4
3
|
require 'mock_redis/assertions'
|
5
4
|
require 'mock_redis/database'
|
@@ -130,7 +129,7 @@ class MockRedis
|
|
130
129
|
defaults[:host] = uri.host
|
131
130
|
defaults[:port] = uri.port if uri.port
|
132
131
|
defaults[:password] = uri.password if uri.password
|
133
|
-
defaults[:db] = uri.path[1
|
132
|
+
defaults[:db] = uri.path[1..].to_i if uri.path
|
134
133
|
end
|
135
134
|
end
|
136
135
|
|