From 871723bce5c546c7c846ea2b2c78dbe67216acce Mon Sep 17 00:00:00 2001 From: fatkodima Date: Mon, 18 Nov 2019 19:31:32 +0200 Subject: [PATCH] Update redis-rb dependency --- .gitignore | 1 - .travis.yml | 4 ---- fakeredis.gemspec | 2 +- gemfiles/redisrb-master.gemfile | 14 -------------- lib/fakeredis/command_executor.rb | 8 -------- lib/redis/connection/memory.rb | 30 +++++++++++++++++++++--------- spec/memory_spec.rb | 10 +++------- spec/sorted_sets_spec.rb | 4 ++-- 8 files changed, 27 insertions(+), 46 deletions(-) delete mode 100644 gemfiles/redisrb-master.gemfile diff --git a/.gitignore b/.gitignore index 2c39189..b530a43 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ *.gem .bundle Gemfile.lock -gemfiles/*.gemfile.lock pkg/* .rvmrc *.rbc diff --git a/.travis.yml b/.travis.yml index 404f668..7dc0d01 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,10 +12,6 @@ rvm: - jruby - rbx-2 -gemfile: - - Gemfile - - gemfiles/redisrb-master.gemfile - matrix: allow_failures: - rvm: rbx-2 diff --git a/fakeredis.gemspec b/fakeredis.gemspec index 24e0da0..58cfe24 100644 --- a/fakeredis.gemspec +++ b/fakeredis.gemspec @@ -18,6 +18,6 @@ Gem::Specification.new do |s| s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) } s.require_paths = ["lib"] - s.add_runtime_dependency(%q, ["~> 3"]) + s.add_runtime_dependency(%q, ["~> 4.1"]) s.add_development_dependency(%q, ["~> 3.0"]) end diff --git a/gemfiles/redisrb-master.gemfile b/gemfiles/redisrb-master.gemfile deleted file mode 100644 index bfb9107..0000000 --- a/gemfiles/redisrb-master.gemfile +++ /dev/null @@ -1,14 +0,0 @@ -source "https://rubygems.org" - -gem 'rake' -gem 'rdoc' -gem "redis", github: "redis/redis-rb" - -platforms :rbx do - gem 'racc' - gem 'rubysl', '~> 2.0' - gem 'psych' -end - -# Specify your gem's dependencies in fakeredis.gemspec -gemspec :path => ".." diff --git a/lib/fakeredis/command_executor.rb b/lib/fakeredis/command_executor.rb index f1106e5..53c6e7c 100644 --- a/lib/fakeredis/command_executor.rb +++ b/lib/fakeredis/command_executor.rb @@ -15,14 +15,6 @@ def write(command) raise Redis::CommandError, "ERR unknown command '#{meffod}'" end - if reply == true - reply = 1 - elsif reply == false - reply = 0 - elsif reply.is_a?(Array) - reply = reply.map { |r| r == true ? 1 : r == false ? 0 : r } - end - replies << reply nil end diff --git a/lib/redis/connection/memory.rb b/lib/redis/connection/memory.rb index d735c61..8c00a41 100644 --- a/lib/redis/connection/memory.rb +++ b/lib/redis/connection/memory.rb @@ -95,9 +95,8 @@ def disconnect def client(command, _options = {}) case command - when :setname then true + when :setname then "OK" when :getname then nil - when :client then true else raise Redis::CommandError, "ERR unknown command '#{command}'" end @@ -867,10 +866,10 @@ def set(key, value, *array_options) option_nx = array_options.delete("NX") option_xx = array_options.delete("XX") - return false if option_nx && option_xx + return nil if option_nx && option_xx - return false if option_nx && exists(key) - return false if option_xx && !exists(key) + return nil if option_nx && exists(key) + return nil if option_xx && !exists(key) data[key] = value.to_s @@ -1095,7 +1094,7 @@ def zpopmax(key, count = nil) results.each do |member| zrem(key, member.first) end - count.nil? ? results.first : results + count.nil? ? results.first : results.flatten end def zpopmin(key, count = nil) @@ -1106,7 +1105,7 @@ def zpopmin(key, count = nil) results.each do |member| zrem(key, member.first) end - count.nil? ? results.first : results + count.nil? ? results.first : results.flatten end def bzpopmax(*args) @@ -1125,7 +1124,13 @@ def zcard(key) def zscore(key, value) data_type_check(key, ZSet) value = data[key] && data[key][value.to_s] - value && value.to_s + if value == Float::INFINITY + "inf" + elsif value == -Float::INFINITY + "-inf" + elsif value + value.to_s + end end def zcount(key, min, max) @@ -1139,7 +1144,14 @@ def zincrby(key, num, value) data[key] ||= ZSet.new data[key][value.to_s] ||= 0 data[key].increment(value.to_s, num) - data[key][value.to_s].to_s + + if num =~ /^\+?inf/ + "inf" + elsif num == "-inf" + "-inf" + else + data[key][value.to_s].to_s + end end def zrank(key, value) diff --git a/spec/memory_spec.rb b/spec/memory_spec.rb index 005767f..f692f14 100644 --- a/spec/memory_spec.rb +++ b/spec/memory_spec.rb @@ -86,16 +86,12 @@ def result end describe '#client' do - it 'returns 1 when command is :setname' do - expect(redis.write([:client, :setname])).to eq 1 + it 'returns OK when command is :setname' do + expect(redis.client(:setname, 'my-client-01')).to eq 'OK' end it 'returns nil when command is :getname' do - expect(redis.write([:client, :getname])).to eq nil - end - - it 'returns true when the comment is :client with an argument' do - expect(redis.write([:client, :client, :list])).to eq 1 + expect(redis.client(:getname)).to eq nil end it 'raises error for other commands' do diff --git a/spec/sorted_sets_spec.rb b/spec/sorted_sets_spec.rb index 66318f4..f74f55d 100644 --- a/spec/sorted_sets_spec.rb +++ b/spec/sorted_sets_spec.rb @@ -107,14 +107,14 @@ module FakeRedis @client.zadd("key", [1, "val1", 2, "val2", 3, "val3"]) expect(@client.zpopmax("key")).to eq(["val3", 3.0]) expect(@client.zpopmax("key", 3)).to eq([["val2", 2.0], ["val1", 1.0]]) - expect(@client.zpopmax("nonexistent")).to eq([]) + expect(@client.zpopmax("nonexistent")).to eq(nil) end it "should pop members with the lowest scores from sorted set" do @client.zadd("key", [1, "val1", 2, "val2", 3, "val3"]) expect(@client.zpopmin("key")).to eq(["val1", 1.0]) expect(@client.zpopmin("key", 3)).to eq([["val2", 2.0], ["val3", 3.0]]) - expect(@client.zpopmin("nonexistent")).to eq([]) + expect(@client.zpopmin("nonexistent")).to eq(nil) end it "should pop members with the highest score from first sorted set that is non-empty" do