forked from resque/redis-namespace
/
spec_helper.rb
82 lines (69 loc) · 1.5 KB
/
spec_helper.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
require 'rubygems'
require 'bundler'
Bundler.setup(:default, :test)
Bundler.require(:default, :test)
require 'rspec'
require 'rspec/its'
require 'redis'
require 'logger'
$TESTING=true
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
require 'redis/namespace'
if Redis.respond_to?(:exists_returns_integer=)
Redis.exists_returns_integer = true
end
module Helper
def capture_stderr(io = nil)
require 'stringio'
io ||= StringIO.new
begin
original, $stderr = $stderr, io
yield
rescue Redis::CommandError
# ignore Redis::CommandError for test and
# return captured messages
$stderr.string.chomp
ensure
$stderr = original
end
end
def with_env(env = {})
backup_env = ENV.to_hash.dup
ENV.update(env)
yield
ensure
ENV.replace(backup_env)
end
def silent
verbose, $VERBOSE = $VERBOSE, false
begin
yield
ensure
$VERBOSE = verbose
end
end
def with_external_encoding(encoding)
original_encoding = Encoding.default_external
begin
silent { Encoding.default_external = Encoding.find(encoding) }
yield
ensure
silent { Encoding.default_external = original_encoding }
end
end
def try_encoding(encoding, &block)
if defined?(Encoding)
with_external_encoding(encoding, &block)
else
yield
end
end
end
RSpec.configure do |c|
c.include Helper
end
RSpec::Matchers.define :have_key do |expected|
match do |redis|
redis.exists(expected)
end
end