/
test_helper.rb
65 lines (54 loc) · 1.5 KB
/
test_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
dir = File.dirname(File.expand_path(__FILE__))
$LOAD_PATH.unshift dir + '/../lib'
$TESTING = true
require 'rubygems'
require 'timeout'
require 'minitest/unit'
require 'minitest/pride'
require 'rack/test'
require 'mocha'
# Run code coverage in MRI 1.9 only.
if RUBY_VERSION >= '1.9' && RUBY_ENGINE == 'ruby'
require 'simplecov'
SimpleCov.start do
add_filter '/test/'
end
end
require 'resque-retry'
require dir + '/test_jobs'
# make sure we can run redis-server
if !system('which redis-server')
puts '', "** `redis-server` was not found in your PATH"
abort ''
end
# make sure we can shutdown the server using cli.
if !system('which redis-cli')
puts '', "** `redis-cli` was not found in your PATH"
abort ''
end
# This code is run `at_exit` to setup everything before running the tests.
# Redis server is started before this code block runs.
at_exit do
next if $!
exit_code = MiniTest::Unit.new.run(ARGV)
`redis-cli -p 9736 shutdown nosave`
end
puts "Starting redis for testing at localhost:9736..."
`redis-server #{dir}/redis-test.conf`
Resque.redis = '127.0.0.1:9736'
# Test helpers
class MiniTest::Unit::TestCase
def perform_next_job(worker, &block)
return unless job = @worker.reserve
@worker.perform(job, &block)
@worker.done_working
end
def clean_perform_job(klass, *args)
Resque.redis.flushall
Resque.enqueue(klass, *args)
worker = Resque::Worker.new(:testing)
return false unless job = worker.reserve
worker.perform(job)
worker.done_working
end
end